如何在python字典中获得一个随机值

我怎样才能从dict随机获得一对? 我正在做一个游戏,你需要猜测一个国家的首都,我需要随机出现的问题。

dict看起来像{'VENEZUELA':'CARACAS'}

我该怎么做?

一种方法是:

 import random d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'} random.choice(d.keys()) 

编辑 :这个问题是原来的职位后几年改变,现在要求一对,而不是一个单一的项目。 最后一行现在应该是:

 country, capital = random.choice(list(d.items())) 

如果你不想使用random模块,你也可以尝试popitem() :

 >> d = {'a': 1, 'b': 5, 'c': 7} >>> d.popitem() ('a', 1) >>> d {'c': 7, 'b': 5} >>> d.popitem() ('c', 7) 

由于dict 不保存顺序 ,所以使用popitem可以从中得到任意的(但不是严格意义上的)顺序的项目。

还要记住popitem从字典中删除键值对,如文档中所述。

popitem()有助于破坏性地迭代字典

我写这个试图解决同样的问题:

https://github.com/robtandy/randomdict

它有O(1)随机访问键,值和项目。

 >>> import random >>> d = dict(Venezuela = 1, Spain = 2, USA = 3, Italy = 4) >>> random.choice(d.keys()) 'Venezuela' >>> random.choice(d.keys()) 'USA' 

通过在字典的keys (国家)上调用random.choice 。

由于这是作业:

检查一下random.sample() ,它将从列表中select并返回一个随机元素。 您可以使用dict.keys()dict.keys()字典值列表。

如果你不想使用random.choice(),你可以试试这个方法:

 >>> list(myDictionary)[i] 'VENEZUELA' >>> myDictionary = {'VENEZUELA':'CARACAS', 'IRAN' : 'TEHRAN'} >>> import random >>> i = random.randint(0, len(myDictionary) - 1) >>> myDictionary[list(myDictionary)[i]] 'TEHRAN' >>> list(myDictionary)[i] 'IRAN' 

尝试这个:

 import random a = dict(....) # a is some dictionary random_key = random.sample(a, 1)[0] 

这绝对有效。

我假设你正在做一个测验类应用程序。 对于这种应用程序,我写了一个函数如下:

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

如果我将提出questions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}的inputquestions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}并调用函数shuffle(questions)然后输出结果如下:

委内瑞拉? 加拉加斯
加拿大? 多伦多

您也可以通过改变选项来进一步扩展它
我希望这会有所帮助。
来源: RADIUS的圈子

由于原来的post想要这

 import random d = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'} country, capital = random.choice(list(d.items())) 

(python 3样式)

试试这个(从项目中使用random.choice)

 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'