我如何从字典中得到一个随机对?我正在制作一款游戏,玩家需要猜测一个国家的首都,我需要随机出现问题。
字典看起来像{'VENEZUELA':'CARACAS'}
我该怎么做呢?
我如何从字典中得到一个随机对?我正在制作一款游戏,玩家需要猜测一个国家的首都,我需要随机出现问题。
字典看起来像{'VENEZUELA':'CARACAS'}
我该怎么做呢?
当前回答
我需要遍历字典中的键的范围,而不是每次都对它排序,并找到了Sorted Containers库。我发现这个库可以通过索引随机访问字典项,直观地解决了这个问题,而不用每次都遍历整个字典:
>>> import sortedcontainers
>>> import random
>>> d = sortedcontainers.SortedDict({1: 'a', 2: 'b', 3: 'c'})
>>> random.choice(d.items())
(1, 'a')
>>> random.sample(d.keys(), k=2)
[1, 3]
其他回答
从字典集dict_data中选择50个随机键值:
sample = random.sample(set(dict_data.keys()), 50)
试试这个:
import random
a = dict(....) # a is some dictionary
random_key = random.sample(a, 1)[0]
这绝对有效。
如果你不想使用随机模块,你也可以尝试popitem():
>> d = {'a': 1, 'b': 5, 'c': 7}
>>> d.popitem()
('a', 1)
>>> d
{'c': 7, 'b': 5}
>>> d.popitem()
('c', 7)
因为字典不保留顺序,所以使用popitem可以从字典中获得任意(但不是严格随机)顺序的项。
还要记住,popitem从字典中删除键值对,正如文档中所述。
Popitem()用于对字典进行破坏性迭代
因为最初的帖子想要一对:
import random
d = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}
country, capital = random.choice(list(d.items()))
(python 3风格)
这适用于Python 2和Python 3:
随机键:
random.choice(list(d.keys()))
一个随机值
random.choice(list(d.values()))
一个随机键和值
random.choice(list(d.items()))