【问题标题】:How to create dict with 2 keys and one value?如何用 2 个键和一个值创建 dict?
【发布时间】:2018-08-03 20:25:46
【问题描述】:

在 python 中,我可以将字典定义为:

d = {}

并将数据存储为:

d['a1'] = 1

如何存储2个key?

d['a1']['b1'] = 1
d['a1']['b2'] = 2

d['a2']['b1'] = 3
d['a2']['b2'] = 4

然后打印所有键和值,例如d['a1'] 这将是:

b1 -> 1
b2 -> 2

【问题讨论】:

  • 你需要一个嵌套字典——一个字典的字典——来做到这一点。
  • 这就是公认的答案(以及@LemonPi's)所做的——defaultdict 是一个子类(即专门的)字典,在这种情况下,它被用来在发生任何事情时自动创建子字典首先分配给它的一个键。查看defaultdict 文档。

标签: python dictionary data-structures


【解决方案1】:

您可以使用来自collections 模块的defaultdict (docs here):

from collections import defaultdict

d = defaultdict(dict)

d['a1']['b1'] = 1
d['a1']['b2'] = 2

d['a2']['b1'] = 3
d['a2']['b2'] = 4

print(d['a1'])

打印:

{'b1': 1, 'b2': 2}

【讨论】:

  • 我最喜欢这个.. 最简洁易懂!
【解决方案2】:

您可以使用 collections.defaultdict,但不能像您的示例那样将 int 和 dict 分配混合到 d['a1']

from collections import defaultdict

d = defaultdict(dict)

d['a1']['b1'] = 1
d['a1']['b2'] = 2

d['a2']['b1'] = 3
d['a2']['b2'] = 4
d['a3'] = 1

print(d['a1'])
print(d['a3'])

>>> {'b1': 1, 'b2': 2}
>>> 1

如果您确实想先将 1 分配给 d['a1'],然后将其更改为字典,则必须在分配 d['a1'] = {} 后手动执行此操作。

【讨论】:

    【解决方案3】:

    那不是一个dict;它是一个 dict,具有其他 dicts 作为值。

    d['a1'] = {'b1': 1}
    d['a1'] = {'b2': 2}
    d['a2'] = {'b1': 3}
    d['a2'] = {'b2': 4}
    

    从那里,您可以像处理任何其他值一样使用每个嵌套的dicts。例如

    for k1, v1 in d.items():
        for k2, v2 in v1.items():
            print("{} -> {} -> {}".format(k1, k2, v2))    
    

    【讨论】:

      【解决方案4】:

      您需要创建嵌套字典:

      d = {'a1': {'b1': 1, 'b2': 2}, 'a2': {'b1': 3, 'b2': 4}}
      

      然后就是:

      for k, v in d['a1'].items():
          print(k, v)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-13
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        相关资源
        最近更新 更多