我如何从字典中得到一个随机对?我正在制作一款游戏,玩家需要猜测一个国家的首都,我需要随机出现问题。
字典看起来像{'VENEZUELA':'CARACAS'}
我该怎么做呢?
我如何从字典中得到一个随机对?我正在制作一款游戏,玩家需要猜测一个国家的首都,我需要随机出现问题。
字典看起来像{'VENEZUELA':'CARACAS'}
我该怎么做呢?
当前回答
b = { 'video':0, 'music':23,"picture":12 }
random.choice(tuple(b.items())) ('music', 23)
random.choice(tuple(b.items())) ('music', 23)
random.choice(tuple(b.items())) ('picture', 12)
random.choice(tuple(b.items())) ('video', 0)
其他回答
试试这个(使用随机。物品选择)
import random
a={ "str" : "sda" , "number" : 123, 55 : "num"}
random.choice(list(a.items()))
# ('str', 'sda')
random.choice(list(a.items()))[1] # getting a value
# 'num'
我假设你在做一个类似测验的应用程序。对于这种应用程序,我写了一个函数,如下所示:
def shuffle(q):
"""
The input of the function will
be the dictionary of the question
and answers. The output will
be a random question with answer
"""
selected_keys = []
i = 0
while i < len(q):
current_selection = random.choice(q.keys())
if current_selection not in selected_keys:
selected_keys.append(current_selection)
i = i+1
print(current_selection+'? '+str(q[current_selection]))
如果我将输入问题={'委内瑞拉':'加拉加斯','加拿大':'多伦多'},并调用函数shuffle(问题),那么输出将如下:
VENEZUELA? CARACAS CANADA? TORONTO
您还可以通过调整选项进一步扩展此功能
我只是偶然发现了一个类似的问题,并设计了以下解决方案(相关函数是pick_random_item_from_dict;其他函数只是为了完整性)。
import random
def pick_random_key_from_dict(d: dict):
"""Grab a random key from a dictionary."""
keys = list(d.keys())
random_key = random.choice(keys)
return random_key
def pick_random_item_from_dict(d: dict):
"""Grab a random item from a dictionary."""
random_key = pick_random_key_from_dict(d)
random_item = random_key, d[random_key]
return random_item
def pick_random_value_from_dict(d: dict):
"""Grab a random value from a dictionary."""
_, random_value = pick_random_item_from_dict(d)
return random_value
# Usage
d = {...}
random_item = pick_random_item_from_dict(d)
与之前的答案的主要区别在于我们使用list(d.s items())处理字典拷贝的方式。我们可以通过只复制d.s keys()并使用随机键来选择其关联值并创建随机项来部分避免这种情况。
这适用于Python 2和Python 3:
随机键:
random.choice(list(d.keys()))
一个随机值
random.choice(list(d.values()))
一个随机键和值
random.choice(list(d.items()))
试试这个:
import random
a = dict(....) # a is some dictionary
random_key = random.sample(a, 1)[0]
这绝对有效。