好,我有一本字典:
stock = {
'GOOG':520.54,
'FB': 76.45,
'YHOO':39.28,
'AMZN': 306.21,
'AAPL': 99.76,
}我想要它打印一个随机数的键值(在2-4之间)。这是一个例子,我做了一个清单给你一个想法。
items = ['Medkit', 'Water', 'Food', 'Gold',
'Ammo', 'Beer', 'LSD']
print(random.choices(population=items, k=random.randrange(2, 5)))我不知道如何编码这个来为一个有值和键的字典提供这样的东西。
发布于 2017-12-01 22:37:50
更新答案(确保不重复)
首先,获取字典中的键列表(注意,这需要转换为list,否则下一步就无法工作)。接下来,使用random.shuffle()对此键列表进行洗牌,并确保随机顺序。然后,只需使用洗牌列表中的前2-4键创建一个新的随机字典,您就可以打印它。请注意,此方法确保选择的2-4个随机密钥是唯一的(与使用random.choice()或random.choices()的方法不同,后者可以产生重复的密钥)。
my_keys = list(stock.keys())
random.shuffle(my_keys)
my_stock = {key: stock[key] for key in my_keys[:random.randrange(2,5)]}
print(my_stock)实例产出:
{'GOOG': 520.54, 'AMZN': 306.21}
{'AMZN': 306.21, 'GOOG': 520.54, 'YHOO': 39.28}
{'AAPL': 99.76, 'AMZN': 306.21, 'YHOO': 39.28}发布于 2017-12-01 22:20:33
dict上的方法items()将给出键/值对。
>>> stock.items()
[('GOOG', 520.54), ('YHOO', 39.28), ('FB', 76.45), ('AAPL', 99.76),
('AMZN', 306.21)]所以你可以试着:
print(random.choices(population=list(stock.items()),k=random.randrange(2, 5)))发布于 2017-12-01 22:17:52
如果我正确理解你的问题,你想得到2到4个随机键及其值。
那这个呢?
import random
for i in range(3):
randomKey = random.choice(stock.keys())
print(randomKey+" : "+stock[randomKey])基本上就是这样。我选择了for循环的3次迭代,因为您说过,您需要2到4个随机键的数字。当然,你可以检查没有钥匙出现两次。
usedKeys = []稍后检查您的随机密钥是否存在,如果不存在,则将其追加到列表中。
https://stackoverflow.com/questions/47602171
复制相似问题