选择字典键:随机值

时间:2018-09-13 09:43:39

标签: python dictionary

我想随机选择1000个字典键,值对为“零”。

此刻,字典键按字母顺序排列。它有成千上万的条目,下面是其中的一部分

[('2014','Zero'),
('2015','Zero'),
('2016','Zero')
('2017','NotZero')]

我成功获取了1000个“零”条目。

Zero = []
cnt = 0
for j in range(len(DIC)):
    if list(DIC.values())[j] == 'Zero':
        Zero.append(list(DIC.items()))
    cnt += 1
    if cnt == 1000:
        break

但是我找不到随机化它们的方法。选择前1000行是有偏见的,因为它们是按字母顺序排列的。

有关解决此问题的任何建议?谢谢!

4 个答案:

答案 0 :(得分:2)

字典不允许在不知道元素键的情况下随机访问元素。唯一的解决方案是找到所有Zero元素,将它们存储在列表中,然后从它们中随机选择:

import random
zeros = [k for k, v in d.items() if v == "Zero"]
random.sample(zeros, 1000)

答案 1 :(得分:1)

用熊猫很容易做到。

df = pd.DataFrame({'key': dic.keys(), 'value': dic.values()})
zeros = df.loc[df.value == 'Zero']
sample = zeros.sample(1000)

答案 2 :(得分:0)

您可以使用shuffle函数:

import random

# get your zero entries

random.shuffle(Zero)

答案 3 :(得分:0)

您可以使用列表推导获取所有匹配值为Zero的键,然后使用random.sample()选择1000个随机条目。

import random

random_keys = random.sample(
    [key for (key, value) in dic.items() if value == 'Zero'],
    1000,
)