2013-10-07 98 views
-1

我有一個數據集,我想用它來創建一本詞典。這裏是從數據集中的樣品:如何在Python中創建一個包含字典值的字典?

P10070 GLI2  GO:0045944 
P10070 GLI2  GO:0045944 
P10070 GLI2  GO:0009913 
P10070 GLI2  GO:0006351 
P10070 GLI2  GO:0006351 
P10070 GLI2  GO:0001649 
P49281 SLC11A2  GO:0071421 
P49281 SLC11A2  GO:0070627 
P49281 SLC11A2  GO:0070579 

我想以與在所述第一列鍵ID的字典,和一組在第三列與在術語對應的各種術語的第一列作爲值。 我知道如何創建一個集合,我知道如何創建一個正常的字典,但我似乎無法將這些技巧放在一起來製作這個特定的字典。你可以幫我嗎? (實際數據集包含的行數多於此處顯示的數量!) 乾杯!

卡爾

+2

你到目前爲止做了什麼? –

回答

0

假設變量dataset存在幷包含從你的問題, 你可以做到這一點的字符串:

result_dict = dict() 
for row in dataset.split('\n'): 
    name, _, value = row.split() 
    result_dict.setdefault(name, set()).add(value) 

result_dict將包含你想要什麼(我猜)。

1

你可以使用defaultdict

import sys 
from collections import defaultdict 

d = defaultdict(set) 
for line in sys.stdin: 
    c1, c2, c3 = line.split() 
    d[c1].add(c3) 
print d 
0

這取決於你如何獲得的初始數據。我假設你已經掌握了它,它是一個可迭代的結構,並且這些行本身是可迭代的。從那裏你可以使用內置的解釋:

>>> dataset = [ 
...  ['key0', 'ignore0', 'value0'], 
...  ['key1', 'ignore1', 'value1'], 
...  ['key2', 'ignore2', 'value2']] 
>>> my_dict = dict([(row[0], row[2]) for row in dataset]) 
>>> my_dict 
{'key2': 'value2', 'key1': 'value1', 'key0': 'value0'} 
相關問題