2013-10-07 79 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'} 
相关问题