python - 获取随 secret 钥 :value pairs from dictionary in python

标签 python csv random dictionary

我试图从我用 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 个基因的所有可能组合。

最佳答案

如果你想从字典 D 中随机获取 K 元素,你只需使用

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

这就是您所需要的。

来自 Python 的文档:

random.sample(population, k)

Return a k length list of unique elements chosen from the population sequence. Used for random sampling without replacement.

在你的情况下

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 变量,这会警告您这里可能有问题。虽然它“返回 100 个基因的所有可能组合”是不正确的,但它只是返回 N 随机 k 元素基因列表(在你的案例 100),其中 N 是字典的大小,远非“所有组合”(即 N!/(N-k)!k!)

关于python - 获取随 secret 钥 :value pairs from dictionary in python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18955554/

相关文章:

sql-server-2008 - 如何使用sed从第一行中删除第一个字符

java - 独特的随机整数生成器

c# - 随机字符串 |密码加盐建议

random - 代表性样本量计算。

python - 如何将句子加载到Python gensim中?

python - Pandas ,将多列的多个功能应用于groupby对象

Python SQLAlchemy 为什么我在 FK 上收到 NoReferencedTableError

python - 如何在 python 中迭代文本文件中的行?

C++:如何将数据作为 CSV 输出到现有文件中的一组特定单元格?

java - 将 xml 数据保存到 CSV