我對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