首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字典中打印任意范围2-4的K和V

从字典中打印任意范围2-4的K和V
EN

Stack Overflow用户
提问于 2017-12-01 22:09:44
回答 3查看 69关注 0票数 2

好,我有一本字典:

代码语言:javascript
复制
stock = {
 'GOOG':520.54,
 'FB': 76.45,
 'YHOO':39.28,
 'AMZN': 306.21,
 'AAPL': 99.76,
}

我想要它打印一个随机数的键值(在2-4之间)。这是一个例子,我做了一个清单给你一个想法。

代码语言:javascript
复制
items = ['Medkit', 'Water', 'Food', 'Gold',
     'Ammo', 'Beer', 'LSD']

print(random.choices(population=items, k=random.randrange(2, 5)))

我不知道如何编码这个来为一个有值和键的字典提供这样的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-01 22:37:50

更新答案(确保不重复)

首先,获取字典中的键列表(注意,这需要转换为list,否则下一步就无法工作)。接下来,使用random.shuffle()对此键列表进行洗牌,并确保随机顺序。然后,只需使用洗牌列表中的前2-4键创建一个新的随机字典,您就可以打印它。请注意,此方法确保选择的2-4个随机密钥是唯一的(与使用random.choice()random.choices()的方法不同,后者可以产生重复的密钥)。

代码语言:javascript
复制
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)

实例产出:

代码语言:javascript
复制
{'GOOG': 520.54, 'AMZN': 306.21}
{'AMZN': 306.21, 'GOOG': 520.54, 'YHOO': 39.28}
{'AAPL': 99.76, 'AMZN': 306.21, 'YHOO': 39.28}
票数 1
EN

Stack Overflow用户

发布于 2017-12-01 22:20:33

dict上的方法items()将给出键/值对。

代码语言:javascript
复制
>>> stock.items()
[('GOOG', 520.54), ('YHOO', 39.28), ('FB', 76.45), ('AAPL', 99.76),
('AMZN', 306.21)]

所以你可以试着:

代码语言:javascript
复制
print(random.choices(population=list(stock.items()),k=random.randrange(2, 5)))
票数 1
EN

Stack Overflow用户

发布于 2017-12-01 22:17:52

如果我正确理解你的问题,你想得到2到4个随机键及其值。

那这个呢?

代码语言:javascript
复制
import random
for i in range(3):
    randomKey = random.choice(stock.keys())
    print(randomKey+" : "+stock[randomKey])

基本上就是这样。我选择了for循环的3次迭代,因为您说过,您需要2到4个随机键的数字。当然,你可以检查没有钥匙出现两次。

代码语言:javascript
复制
usedKeys = []

稍后检查您的随机密钥是否存在,如果不存在,则将其追加到列表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47602171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档