我编写了一个Python脚本,允许我在文件中检索一些信息,如e值、登录次数。。。然后我将这些信息存储在字典中
import operator
file = open("4.A.1.1.3.txt", "r")
line = file.readline()
dico_hit = dict()
for line in file :
if '#' not in line :
columns = line.split()
query = columns[3]
accession = columns[4]
evalue = columns[6]
hmmfrom = int(columns[15])
hmmto = int(columns[16])
dico_hit[query] = {'Accession' : accession, 'E-value' : evalue,'Hmmfrom' : hmmfrom, 'Hmmto' : hmmto}
以下是我的字典预览:
PTS_EIIB {'Accession': 'PF00367.21', 'E-value': '4.9e-21', 'Hmmfrom': '2', 'Hmmto': '34'}
PTS_EIIC {'Accession': 'PF02378.19', 'E-value': '8.9e-92', 'Hmmfrom': '1', 'Hmmto': '324'}
我想按一个字典值(E值)对字典列表进行排序。为此,我使用函数“sorted”
sort_evalue= sorted(dico_hit, key=lambda k: k['E-value'])
print(sort_evalue)
我犯了这样的错误:
TypeError: string indices must be integers
我不明白是什么导致了这个错误?这难道不是正确的方式吗
dico_hit
不是一个列表,它是一个dict
,如果您想对它们进行排序,应该使用list。因此,在循环之前:然后像下面这样附加到列表,而不是
dico_hit[query] = {'Ac...
:那么
sorted
函数就可以正常工作了顺便说一下:
相关问题 更多 >
编程相关推荐