Python 选择字典键:随机选择值
我想随机选取1000个字典键、值对,它们的值为“零” 目前字典上的键是按字母顺序排列的。它有数千个条目,下面是它的一部分Python 选择字典键:随机选择值,python,dictionary,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.ap
[('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行是有偏差的,因为它们是按字母顺序排列的
对解决这个问题有什么建议吗?谢谢大家! 您可以使用
shuffle
功能:
import random
# get your zero entries
random.shuffle(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)
您可以使用列表理解来获取匹配值为
0
的所有键,然后使用random.sample()
选择1000个随机条目
import random
random_keys = random.sample(
[key for (key, value) in dic.items() if value == 'Zero'],
1000,
)
在没有更多上下文的情况下,将
'Zero'
和'NotZero'
作为键,并将值作为列表,似乎效率更高。然后,您所要做的就是random.sample(DIC['Zero'],1000)
。当然,这取决于您通过当前键(年份)访问值的次数,以及您希望“值为零的1000个随机年份”的次数。[('2014','zero'),('2015','zero'),('2016','zero')('2017','NotZero')]这不是字典