一個Dictonary我有一本字典,看起來像這樣:我能爭搶的Python
a = {1 : True, 2 : False, 3 : True, 4 : False, etc}
我怎麼能搶的值,以得到這樣的事情?在字典中的值
a = {1 : True, 2 : True, 3 : False, 4 : False, etc}
一個Dictonary我有一本字典,看起來像這樣:我能爭搶的Python
a = {1 : True, 2 : False, 3 : True, 4 : False, etc}
我怎麼能搶的值,以得到這樣的事情?在字典中的值
a = {1 : True, 2 : True, 3 : False, 4 : False, etc}
如果「爭先恐後」你的意思是隨機重新安排鍵值對,你能做到這一點的一條線,像這樣:
from random import sample
a = dict(zip(a, sample(a.values(), len(a))))
這並不像使用shuffle
高效,但是。
另外,請注意,在Python 3中,dict.values
返回dict_values
object,其行爲與您預期的不符。因此,你需要寫如下:
a = dict(zip(a, sample(list(a.values()), len(a))))
尼斯,很好的使用'random.sample'。 –
@zondo謝謝,趕上! –
當然,但是如果OP想要隨機翻轉布爾值呢?這個問題並沒有定義他們'亂搞'的含義。 –
我不知道是否有一個更清潔的方式,但random.shuffle
應該把工作做好。
from random import shuffle
a = {1 : True, 2 : False, 3 : True, 4 : False}
values = list(a.values())
shuffle(values)
shuffled = dict(zip(a, values))
# {1: True, 2: False, 3: False, 4: True}
import random
randValues = a.values()
random.shuffle(randValues)
for k in a:
a[k] = randValues.pop()
可能是你想要的:
>>> a = {1 : True, 2 : False, 3 : True, 4 : False}
>>> import random
>>> for key in a:
... val = random.choice([True, False])
... a[key] = val
...
>>> a
{1: True, 2: True, 3: True, 4: False}
你嘗試過什麼到目前爲止,結果是什麼,爲什麼在那裏不滿意?有什麼問題? – zegkljan
那究竟是什麼被炒了?交換鍵和值?隨機翻轉布爾值?沒有「加擾」的標準定義,您需要提供一個。 –
對不起,我的意思是隨機分配一個密鑰到一個值 –