gpt4 book ai didi

python - 提取具有多个值的 : Python dictionary, 键

转载 作者:行者123 更新时间:2023-11-28 17:40:06 28 4
gpt4 key购买 nike

我有两个文件,我正尝试从文件 1 中提取一些值,如下所示:

File1:
2 word1
4 word2
4 word2_1
4 word2_2
8 word5
8 word5_3

File 2:
4
8

我想要的是提取以 4 和 8 开头的每一行(来自文件 2),它们很多。所以通常如果只有一行匹配,我会使用 python 字典,一个键一个元素很容易!但是现在我有多个元素与同一个键匹配,我的脚本只会提取最后一个(很明显,随着它的进行,它会删除以前的!)。所以我知道这不是它的工作原理,但我不知道,如果有人可以帮助我开始,我会很高兴。

这是我的“常用”代码:

gene_count = {}
my_file = open('file1.txt')
for line in my_file:
columns = line.strip().split()
gene = columns[0]
count = columns[1:13]
gene_count[gene] = count

names_file = open('file2.txt')
output_file = open('output.txt', 'w')

for line in names_file:
gene = line.strip()
count = gene_count[gene]
output_file.write('{0}\t{1}\n'.format(gene,"\t".join(count)))

output_file.close()

最佳答案

创建字典、列表的值并附加到它们。

一般来说:

from collections import defaultdict
my_dict = defaultdict(lambda: [])

for x in xrange(101):
if x % 2 == 0:
my_dict['evens'].append(str(x))
else:
my_dict['odds'].append(str(x))

print 'evens:', ' '.join(my_dict['evens'])
print 'odds:', ' '.join(my_dict['odds'])

在您的情况下,您的值是列表,因此将列表添加(连接)到字典的列表中:

from collections import defaultdict
gene_count = defaultdict(lambda: [])

my_file = open('file1.txt')
for line in my_file:
columns = line.strip().split()
gene = columns[0]
count = columns[1:13]
gene_count[gene] += count

names_file = open('file2.txt')
output_file = open('output.txt', 'w')

for line in names_file:
gene = line.strip()
count = gene_count[gene]
output_file.write('{0}\t{1}\n'.format(gene,"\t".join(count)))

output_file.close()

如果您实际想要打印的是每个基因的计数,则将 "\t".join(count) 替换为 len(count),长度的列表。

关于python - 提取具有多个值的 : Python dictionary, 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638734/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com