如何在python中创建一个带有sets作为值的字典?

时间:2013-10-07 20:08:53

标签: python dictionary set

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

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

卡尔

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

result_dict将包含您想要的内容(我猜)。

答案 2 :(得分: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'}