从Python中的字典中获取随机键:值对

2024-04-16

我试图从我用 csv 文件制作的字典中提取一组随机的键值对。字典包含基因信息,基因名称是字典键,数字列表(与基因表达等相关)是值。

# python 2.7.5
import csv
import random

genes_csv = csv.reader(open('genes.csv', 'rb'))

genes_dict = {}
for row in genes_csv:
    genes_dict[row[0]] = row[1:]

length = raw_input('How many genes do you want? ')

for key in genes_dict:
    random_list = random.sample(genes_dict.items(), int(length))
    print random_list

问题是,如果我尝试获取 100 个基因的列表(例如),它似乎会迭代整个字典并返回 100 个基因的每种可能的组合。


如果你想随机K字典中的元素D你只需使用

import random
random.sample( D.items(), K )

这就是您所需要的。

来自Python的文档:

random.sample(人口, k)

返回一个k唯一元素的长度列表 选自人口顺序。用于随机抽样,无需 替代品。

在你的情况下

import csv
import random

genes_csv = csv.reader(open('genes.csv', 'rb'))

genes_dict = {}
for row in genes_csv:
    genes_dict[row[0]] = row[1:]

length = raw_input('How many genes do you want? ')
random_list = random.sample( genes_dict.items(), int(length) )
print random_list

不需要遍历字典的所有键

for key in genes_dict:
    random_list = random.sample(genes_dict.items(), int(length))
    print random_list

请注意,您实际上没有使用key循环中的变量,这应该警告您这里可能有问题。虽然它是not true它“返回 100 个基因的所有可能组合。”,它只是返回N random k元素基因列表(在你的情况下为 100),其中N是字典的大小,它远非“所有组合”(即N!/(N-k)!k!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从Python中的字典中获取随机键:值对 的相关文章

随机推荐