在Python中从字典中获取键(及其值)的困惑
我遇到了一点问题。我有一个字典,我想从这个字典中随机选择一个项,但不想返回一个列表。
random.choice() 返回一个列表。
random.sample() 也返回一个列表。
random.keys() 和 random.values() 都返回列表。
我需要一个函数,它能返回一个键 和 这个键对应的值。
下面是伪代码:
import random
myDict = {"IronSword" : 15, "SteelSword" : 30, "Playing Cards" : 45, "Spider legs" : 60"}
d = random.functionNameHere(myDict, 1) # Same arguments as random.sample()
print d
这个函数应该返回像 {"SteelSword" : 30} 这样的结果,而不是 ['SteelSword']。
抱歉如果我有点不太明白,可能跳过了一些简单的东西。我是一个中级的 Python 学习者,还没有接触到字符串字面量。任何帮助都非常感谢!
5 个回答
0
random.choice
是一个函数,它可以从一个可迭代的对象中随机选择一个元素。
from random import choice
d = dict([choice(myDict.items())])
print d
0
因为还没有人让它的行为像 random.sample
一样呢 :)
import random
myDict = {"IronSword" : 15, "SteelSword" : 30, "Playing Cards" : 45, "Spider legs" : 60}
random_keys = random.sample(myDict.keys(), 2)
d = {k: myDict[k] for k in random_keys}
return d
0
如果你没有找到想要的功能,那就自己写一个:
def getOne():
k = random.choice(myDict.keys())
v = myDict[k]
return (k,v)
测试:
>>> getOne()
('SteelSword', 30)
>>> getOne()
('Spiderlegs', 60)
>>> getOne()
('Spiderlegs', 60)
>>> getOne()
('SteelSword', 30)
>>> getOne()
('Playing Cards', 45)
1
在Python 2中,你可以这样做:
>>> dict(random.sample(myDict.items(), 1))
{'Playing Cards': 45}
random.sample
会返回一个包含元组的列表,然后你可以把这个列表放进dict
里,这样就能创建一个只有一个条目的字典。
1
制作一个列表是随机选择和创建新字典的一个中间步骤:
items = list(myDict.items()) # list of key/value pairs
key, value = random.choice(items) # pick a random pair
print {key: value} # make a dictionary out of the result
希望这对你有帮助 :-)