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())]