在Python中,我可以这样定义字典:
d = {}
并将数据存储为:
d['a1'] = 1
如何存储两个密钥?
d['a1']['b1'] = 1
d['a1']['b2'] = 2
d['a2']['b1'] = 3
d['a2']['b2'] = 4
然后打印出所有键和值,例如d['a1']
,其结果应为:
b1 -> 1
b2 -> 2
在Python中,我可以这样定义字典:
d = {}
d['a1'] = 1
如何存储两个密钥?
d['a1']['b1'] = 1
d['a1']['b2'] = 2
d['a2']['b1'] = 3
d['a2']['b2'] = 4
然后打印出所有键和值,例如d['a1']
,其结果应为:
b1 -> 1
b2 -> 2
你可以使用来自 collections
模块的 defaultdict
(文档在这里):
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}
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
d['a1']
,然后将其更改为字典,那么您需要在赋值后手动执行d['a1'] = {}
。d = {'a1': {'b1': 1, 'b2': 2}, 'a2': {'b1': 3, 'b2': 4}}
然后只需要:
for k, v in d['a1'].items():
print(k, v)
那不是一个dict
; 它是一个将其他dict
作为值的dict
。
d['a1'] = {'b1': 1}
d['a1'] = {'b2': 2}
d['a2'] = {'b1': 3}
d['a2'] = {'b2': 4}
从那里开始,您可以像处理其他任何值一样处理每个嵌套的dict
。例如:
for k1, v1 in d.items():
for k2, v2 in v1.items():
print("{} -> {} -> {}".format(k1, k2, v2))
defaultdict
是一个子类(即专门化)字典,本例中它被用于在首次分配给其键之一时自动创建子字典。请查看defaultdict
文档。 - martineau