我对Python有点新,我有一个问题。 我有一个文件,每个唯一标识符有5个结果。每个结果都有一个百分比匹配以及其他各种数据。我的目标是找到匹配率最高的结果,然后从原始行中检索更多信息。 例如检索单个键下具有多个值的字典中的顶部值
Name Organism Percent Match Misc info
1 Human 100 xxx
1 Goat 95 yyy
1 Pig 90 zzz
我试图通过把每个键在字典的值是(为每个键即多个值),每百分数比赛唯一给定的名称来解决这个问题。我认为继续进行的唯一方法是将此字典中的值转换为列表,然后对列表进行排序。然后,我想要检索列表中最大的值(列表[0]或列表[-1]),然后从原始行中检索更多信息。 这里是我的代码迄今
list = []
if "1" in line:
id = line
bsp = id.split("\t")
uid = bsp[0]
per = bsp[2]
if not dict.has_key(uid):
dict[uid] = []
dict[uid].append(per)
list = dict[uid]
list.sort()
if list[0] in dict:
print key
这最终只是打印每一个关键,而不是只具有最大百分比。有什么想法吗?谢谢!
注意:上面的示例文件,每个“1”是该项目的名称,并且100,95和90是百分比匹配等。 – Vince 2012-02-15 23:01:03
>。<不使用列表作为一个变量名或者dict。 – 2012-02-15 23:04:38
你是否在循环中执行给定的代码?在这种情况下,它会在读取整个文件之前打印密钥。而且,在排序列表后,'my_list [0]'将是最小的项目,而不是最大的项目。 – 2012-02-15 23:07:38