从字典中随机范围2-4打印K和V.

时间:2017-12-01 22:09:44

标签: python python-3.x

好的,我有一本字典:

df = pd.read_csv('input.csv')
df[['id', 'count']].to_csv('output.csv')

我希望打印随机数量的键值(2-4之间)。 这是我为列表提供了一个想法的例子。

stock = {
 'GOOG':520.54,
 'FB': 76.45,
 'YHOO':39.28,
 'AMZN': 306.21,
 'AAPL': 99.76,
}

我不知道如何编写这个代码来为具有值和键的字典喷出类似的内容。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

更新了答案(确保没有重复)

首先获取字典中的键列表(注意这需要转换为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}

答案 2 :(得分:0)

如果我正确理解您的问题,您希望获得2到4个随机密钥及其值。

这个怎么样?

import random
for i in range(3):
    randomKey = random.choice(stock.keys())
    print(randomKey+" : "+stock[randomKey])

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

usedKeys = []

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