Python 2.7中如何声明一个空字典的空字典?

4

声明一个空的字典,我这样做:

mydict = dict()

声明一个空字典的空字典,我也可以这样做:

mydictofdict = dict()

需要时添加字典:

mydict1 = dict()
mydictofdict.update({1:mydict1})

并在需要时对其中的元素进行操作:

mydictofdict[1].update({'mykey1':'myval1'})

这样做是否符合Python的风格?有没有更好的方法来实现它?


3
为什么不直接用mydictofdict[1] = mydict1mydictofdict[1]['mykey1'] = 'myval1' 呢?如果你打算更新任意数量的值,那么这正是 update() 最初设计的目的。 - meowgoesthedog
你的字典是静态的吗?为什么不直接声明“mydictofdict = {1:{}}”?如果它们是动态的,为什么不使用“mydictofdict [1] = mydict1”? - MisterMiyagi
太棒了,第一级是静态的,第二级是动态的。 - lalebarde
2个回答

5

您可以使用collections.defaultdict来创建一个嵌套字典,其中您可以定义一个字典的初始值。

from collections import defaultdict

#Use the initial value as a dictionary
dct = defaultdict(dict)

dct['a']['b'] = 'c'
dct['d']['e'] = 'f'

print(dct)

输出结果将是:
defaultdict(<class 'dict'>, {'a': {'b': 'c'}, 'd': {'e': 'f'}})

3

你可以用{}创建一个空字典:

d = {}

你可以像第一种方法那样创建字典值为字典的字典:

d = {
    1: {},
    2: {}
}

您可以通过[]修改字典的值:
d = {1: 0}
d[1] = 1
d

{1: 1}

类似于嵌套字典:

d = {
    1: {},
    2: {}
}
d[1][4] = 5
d

{1: {4: 5}, 2: {}}

如果你想根据键列表创建一个字典嵌套字典,你可以使用字典推导式:

keys = [1,2,3,4,5]
d = {key: {} for key in keys}
d

{1: {}, 2: {}, 3: {}, 4: {}, 5: {}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接