gpt4 book ai didi

python - 将文件中的元素与嵌套字典python匹配

转载 作者:行者123 更新时间:2023-12-01 04:44:51 25 4
gpt4 key购买 nike

在回答我的问题之前,我想向你们提供迄今为止我所掌握的信息。

首先,我从一个文件生成了一个嵌套字典,我想将其用于比较。我的字典的示例如下图所示(唯一的区别是大小):

Negdic = {'ADA': {'NM_000022': ['43248162', '43248939',
'43249658', '43251228',
'43251469', '43251647',
'43252842', '43254209',
'43255096', '43257687',
'43264867', '43280215', '']},
'ALDOB': {'NM_000035': ['104182841', '104187124',
'104187734', '104188836',
'104189763', '104190750',
'104192036', '104193057',
'104197990', '']}}

现在,由于我不熟悉Python并且对编程不熟悉,这就是我正在努力的地方。我想使用第二个文件在我的字典中搜索匹配项。我的文件如下所示:

chrom   exon_start  exon_end    strand  isoform exon_numer  gene    coding_length   total_mutations_reported    total_exonic_mutations  exonic_splicing_mutations   total_splice_site_mutations 3_ss_mutations  5_ss_mutations
chr20 43255096 43255240 - NM_000022 4 ADA 144 12 9 0 3 3 0
chr9 104187734 104187909 - NM_000035 7 ALDOB 175 7 4 0 3 2 1

我想要做的是在我的字典中搜索基因名称,然后匹配异构体名称,最后在相应的异构体列表中搜索 exon_start 并打印列表中找到 exon_start 的位置。

这是我一直在尝试使用的一些示例代码,但我不确定我是否走在正确的轨道上。

for line in open("NegativeHotspot.txt"):
columns = line.split('\t')
if len(columns) >= 2:
Hotspotgenes = columns[6]
Hotspotgenes2 = Hotspotgenes.split()
print Hotspotgenes2


#print Hotspotgenes2
#x = type(Hotspotgenes)
#print x
#for k in Hotspotgenes:
# if k in Negdic:
# print k, Negdic[k]

第一部分是我一直在尝试创建文件中的基因列表以在字典中搜索我的结果的内容,但我什至很难从列的输出中创建一个列表[ 6]。另外,我什至不确定我是否以最好的方式处理我的代码。该编码部分的最后一部分是我试图在我的字典中找到匹配项而搞乱的东西。

帮助将不胜感激。我很迷失:(

最佳答案

您有一个制表符分隔值文件,因此您应该使用专用于分隔文件格式的模块 csv .

import csv

您还有带有有意义名称的 header 。这样做会更容易理解 row[header_name]row[col_number] ,所以让我们使用 csv.DictReader

with open("NegativeHotspot.txt") as f:
reader = csv.DictReader(f, delimiter="\t")

现在我们可以迭代 reader 的每一行并使用 list.index 提取您需要的信息方法

    for row in reader:
gene, isoform = row['gene'], row['isoform']
count = Negdic[gene][isoform].index(row['exon_start'])

你永远不会说你的最终结果是什么 count变量,但是count现在是 exon_start 的索引发生在您的 Negdic[gene][isoform]字典。

关于python - 将文件中的元素与嵌套字典python匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29732686/

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