-1

我有一个数据集,我想用它来创建字典。这是数据集中的一个示例:

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 作为键,第三列中的一组与第一列中的术语相对应的各种术语作为值。我知道如何创建一个集合,我知道如何创建一个普通的字典,但我似乎无法将这些技能放在一起来制作这个特定的字典。请你帮助我好吗?(实际数据集包含的行数比此处显示的要多!)干杯!

卡尔

4

3 回答 3

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
于 2013-10-07T20:34:06.497 回答
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'}
于 2013-10-07T20:40:44.723 回答
0

假设变量dataset存在并包含您问题中的字符串,您可以这样做:

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

result_dict将包含你想要的(我猜)。

于 2013-10-07T20:14:49.003 回答