如何在python中创建以集合为值的字典?

2024-06-16 10:39:12 发布

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

卡尔


Tags: 数据idgo示例字典技能词典术语
3条回答

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

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

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

这取决于你如何获得初始数据。我假设您已经得到了它,并且它在iterable结构中,并且行本身也是iterable。从这里您可以使用内置的理解:

>>> 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'}

您可以使用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

相关问题 更多 >