【问题标题】:How do I create a dictionary with sets as values in python? [closed]如何在python中创建一个集合作为值的字典? [关闭]
【发布时间】:2013-10-07 20:08:52
【问题描述】:

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

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

卡尔

【问题讨论】:

  • 到目前为止你做了什么?

标签: python dictionary set


【解决方案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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      这取决于您获取初始数据的方式。我假设您已经掌握了它,并且它处于可迭代结构中,并且行本身是可迭代的。从那里你可以使用内置的理解:

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

      【讨论】:

        猜你喜欢
        • 2016-09-14
        • 2015-01-30
        • 2019-06-15
        • 2015-01-23
        • 2021-09-28
        • 2016-10-05
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        相关资源
        最近更新 更多