我想随机选择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 行是有偏见的,因为它们是按字母顺序排列的。
关于解决这个问题有什么建议吗? 谢谢!
字典不允许在不知道元素键的情况下随机访问元素。唯一的解决方案是找到所有Zero
元素,将它们存储在列表中,然后从中随机选择:
import random
zeros = [k for k, v in d.items() if v == "Zero"]
random.sample(zeros, 1000)
它可以很容易地用熊猫完成。
df = pd.DataFrame({'key': dic.keys(), 'value': dic.values()})
zeros = df.loc[df.value == 'Zero']
sample = zeros.sample(1000)
您可以使用shuffle
函数:
import random
# get your zero entries
random.shuffle(Zero)
您可以使用列表推导式来获取匹配值为Zero
的所有键,然后使用random.sample()
选择 1000 个随机条目。
import random
random_keys = random.sample(
[key for (key, value) in dic.items() if value == 'Zero'],
1000,
)