pythondict随机
㈠ python中,dict(((1,2),(2,3)))可以,为什么dict((1,2))会报错呢
答案:因为dict((1,2))中的参数(1,2)的第一个元素1是不可迭代的,所以报错。具体分析如下:
dict()的机制如下
报错的原因在于列表的第一项中只有一个元素,并且不可迭代。也就无法拆包。对应于dict((1,2))中的参数是(1,2),这个参数的第一个元素是整数1,是不可迭代的,所以报错。
㈡ 关于python dict函数问题
x = input("请输入X的值:")
dict1 = {"1":"001","2":"010","3":"011","4":"100"}
x_print= ""
for i in x:
x_print = x_print + dict1[i]
print(x_print)
我的python是3.6的语法可能不太一样
㈢ 如何用python编写一个简易的随机点名软件
思路:1、定义一个字典,把名字和数字对应起来;2、引用随机模块;3、输入要点名的个数,通过循环输出名字。
具体代码如下:
#-*-coding:utf-8-*-
fromrandomimportrandint
DictName={1:'Aaron',
2:'Abel',
3:'Abraham',
4:'Adam',
5:'Adrian',
6:'Alva',
7:'Alex',
8:'Alexander',
9:'Alan',
10:'Albert',
11:'Alfred',
12:'Andrew',
13:'Andy',
14:'Angus',
15:'Anthony',
16:'Arthur',
17:'Austin',
18:'Ben',
19:'Benson',
20:'Bill',
21:'Bob',
22:'Brandon',
23:'Brant',
24:'Brent',
25:'Brian',
26:'Bruce',
27:'Carl',
28:'Cary',
29:'Caspar',
30:'Charles',
31:'Cheney',
32:'Chris',
33:'Christian',
34:'Christopher',
35:'Colin',
36:'Cosmo',
37:'Daniel',
38:'Dennis',
39:'Derek',
40:'Donald',
41:'Douglas',
42:'David',
43:'Denny',
44:'Edgar',
45:'Edward',
46:'Edwin',
47:'Elliott',
48:'Elvis',
49:'Eric',
50:'Evan',
51:'Francis',
52:'Frank',
53:'Franklin',
54:'Fred',
55:'Gabriel',
56:'Gaby',
57:'Garfield',
58:'Gary'}
Num=raw_input('请输入需要点名个数:')
flag=True
whileflag:
ifNum.isdigit():
Ind=int(Num)
flag=False
else:
print'输入错误,请确认'
else:
foriinrange(Ind):
printDictName[randint(1,58)]
运行结果:
请输入需要点名个数:4
Brant
Cheney
David
Alan
㈣ python字典,是来干什么的啊
dict 是记录复杂无序数据,就是一对多,可以理解为多维数组.
映射类型相关的函数
比如你记录一次野餐朋友带的食物数量, dict = {'小明':{'红烧肉':6,'大闸蟹':8,'水煮鱼':1},'小花':{'黄瓜':9,'番茄':2},'小六子':{'啤酒':30,'可乐':40}}
dict可以嵌套list,把无序的数据调整为有序的数据,可以简单地理解为,一对多个一维数组,本质上还是多维数组.
比如你要记录同学们有多少个女朋友,dict = {'小明':['1号女友','2号女友'],'大个子':['1号女友','2号女友','3号女友']},你要统计谁的女朋友多,这个就比较明显地体现出来了.
比如你要记录一次会议参加的人员的基本信息,大家的信息都不一样时,也是无序随机事件:
dict = {'男性':{'张博':{'年龄':30,'职业':'老师','级别':'高级教师'},'王强':{'手机':'1309999999'}},'女性':{'小花':{'爱好':'化妆','职业':'美容师'}}}
㈤ python 中使用字典随机生成三个有十个元素的数组范围1,100把三个合并成一个挑出三个合并成一个,挑出奇偶
没有键值对应就不该用‘字典’,可以用与字典同为{}花括号的set数集。
py3.x代码
import random
def randomlist():
s=set()
while len(s)<10: #保证有10个不同数
s.add(random.randint(1,100))
return s
def together(l):
return list(l[0])+list(l[1])+list(l[2])
def get_odd_even(l):
o,e=[],[]
for i in l:
if i%2==0: e.append(i)
else: o.append(i)
return [o,e]
def list_main():
list1=randomlist()
list2=randomlist()
list3=randomlist()
totallist = together([list1, list2, list3])
print(totallist)
ji, ou = get_odd_even(totallist)
print('奇数'+repr(ji))
print('偶数'+repr(ou))
list_main()
==========
>>>
{64, 65, 66, 7, 74, 11, 14, 16, 81, 18, 83, 20, 87, 25, 90, 28, 96, 38, 39, 43, 47, 48, 51, 56, 57, 60, 63}
奇数[65, 7, 11, 81, 83, 87, 25, 39, 43, 47, 51, 57, 63]
偶数[64, 66, 74, 14, 16, 18, 20, 90, 28, 96, 38, 48, 56, 60]
㈥ python 生成包含100个两位数随机整数的元组
#!usr/bin/python
#-*-coding:utf-8-*-
#python2.7
#分解需求
#1.生成2位数随机数那么就是random.randint(10,99)
#2.生成100个那么就是foriinrange(100)
importrandom
random_tuple=tuple(random.randint(10,99)foriinrange(100))
printrandom_tuple
#字典dict_num={'数字':'出现的次数'}
dict_num={}
foriinrandom_tuple:
ifdict_num.get(i):
dict_num[i]+=1
else:
dict_num[i]=1
printdict_num
㈦ python怎么随机取列表的值
第一步:
我分析如果从一堆数里随机抽取几个,并且按原来的顺序输出的话,那么至少要随机两次才能完成,第一次随机的值是确定随机几个数,第二次随机是确定随机的值。
第二步:
随机抽取几个可以用random.randint(1,n)这个函数来实现,这个n代表所要随机列表的长度。
第三步:
上一步出来一个数决定此次随机出几个值出来,现在假定是n,再次随机就是从列表里随机抽取n个值这个可以用random.sample(dict,n)这个方法实现,这个函数可以传入一个字典,和一个数字返回一个列表。
第四步:
得到的结果需要按原来的顺序输出,那么存储就需要考虑用dict了,因为字典的k-v特性可以实现找到原来的顺序,我具体的实现如下:
importrandom
#random_number(a)函数的功能传入一个数,返回1到这个数的随机数
defrandom_number(a):
returnrandom.randint(1,a)
#print(random_number(4))
#random_list(a,b)函数的功能,传入一个字典a,和一个数值b,
#1<=b<=a的长度,返回一个拥有b的个数值是a中的key值的list
defrandom_list(a,b):
returnrandom.sample(list(a),b)
a={1:'a',2:'j',3:'g',4:'h',5:'k',6:'i',7:'l',8:'f',9:'v',10:'b',11:2,12:5,13:'x'}
b=len(a)
#print(random_list(a,b))
#random_dictvalue函数的功能,传入一个字典a和一个列表b,返回以b为key,a中对应的value的值
defrandom_dictvalue(a,b):
b.sort()
foriinb:
print(a.get(i),end='')
print(random_dictvalue(a,random_list(a,random_number(b))))
#result
>>>================================RESTART================================
>>>
afNone
>>>================================RESTART================================
>>>
giNone
>>>================================RESTART================================
>>>
ajhlvb25xNone
㈧ python dict怎么实现的
Python中dict对象是表明了其是一个原始的Python数据类型,按照键值对的方式存储,其中文名字翻译为字典,顾名思义其通过键名查找对应的值会有很高的效率,时间复杂度在常数级别O(1).dict底层实现(推荐学习:Python视频教程)
在Python2中,dict的底层是依靠哈希表(Hash Table)进行实现的,使用开放地址法解决冲突.
所以其查找的时间复杂度会是O(1).
Dict的操作实现原理(包括插入、删除、以及缓冲池等)
首先介绍:PyDictObject对象的元素搜索策略:
有两种搜索策略,分别是lookdict和lookdict_string,lookdict_string就是lookdict在对于PyStringObject进行搜索时的特殊形式,那么通用的搜索策略lookdict的主要逻辑是:
(1)对第一个entry的查找:
a)根据hash值获得entry的索引
b)若entry处于unused态,则搜索结束;若entry所指向的key与搜索的key相同,则搜索成功
c)若当前entry处于mmy态,则设置freeslot(这里的freeslot是可以返回作为下一个立即可用的地址来存储entry)
d)检查Active态的entry,若其key所指向的值与搜索的值相同,则搜索成功
(2)对剩余的探测链中的元素的遍历查找:
a)根据所采用的探测函数,获得探测链上的下一个待检查的entry
b)检查到一个unused态的entry,表明搜索失败:
如果freeslot不为空,则返回freeslot;否则返回unused态的entry
c)检查entry的key与所搜索的key的引用是否相同,相同则搜索成功,返回entry
d)检查entry的key与所搜索的key的值是否相同,相同则搜索成功,返回entry
e)遍历过程中,发现mmy态的entry,且freeslot未设置,则设置freeslot
接下来是:PyDictObject对象的元素插入与删除的策略:
需要首先用到搜索策略,搜索成功,则直接将值进行替换,搜索失败,返回unused态或mmy态的entry,设置key、value和hash值,并且根据目前插入的元素情况进行ma_table的大小的调整(调整的依据就是装载率,根据是否大于2/3来进行调整);删除也是类似,先计算hash值,然后搜索相应的entry,搜索成功,删除entry中维护的元素,将entry从Active态修改为mmy态
在PyDictObject的实现过程中,会用到缓冲池,在PyDictObject对象被销毁的时候,才开始接纳被缓冲的PyDictObject对象,定义的缓冲池可接纳的对象数量是80个,创建新PyDictObject对象的时候,如果缓冲池中有,则可以直接从缓冲池中取出使用
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python dict怎么实现的的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
㈨ python的dict操作复杂度有标准吗
字典(dict)
下列字典的平均情况基于以下假设:
1. 对象的散列函数足够撸棒(robust),不会发生冲突。
2. 字典的键是从所有可能的键的集合中随机选择的。
小窍门:只使用字符串作为字典的键。这么做虽然不会影响算法的时间复杂度,但会对常数项产生显着的影响,这决定了你的一段程序能多快跑完。
操作平均情况最坏情况复制[注2]O(n)O(n)取元素O(1)O(n)更改元素[注1]O(1)O(n)删除元素O(1)O(n)遍历[注2]O(n)O(n)
注:
[1] = These operations rely on the “Amortized” part of “Amortized Worst Case”. Indivial actions may take surprisingly long, depending on the history of the container.
[2] = For these operations, the worst case n is the maximum size the container ever achieved, rather than just the current size. For example, if N objects are added to a dictionary, then N-1 are deleted, the dictionary will still be sized for N objects (at least) until another insertion is made.
㈩ PYTHON:在Dictionary中,如何随机提取key和value
from random import choice
d = dict(a=3, b=4, c=5)
print d[choice(d.keys())]