DefaultDicts的Python字典

时间:2016-08-01 15:04:50

标签: python

我正在尝试构建一个包含defaultdicts的字典:

from collections import defaultdict

my_dict = {
'first_key':defaultdict(list)
}

my_dict['first_key'].extend('add this to list')

...但返回:AttributeError: 'collections.defaultdict' object has no attribute 'extend'

连连呢?感谢。

1 个答案:

答案 0 :(得分:2)

如果我错了,请纠正我,但我不认为你想要一本默认词典。您使用内置的dict方法setdefault轻松完成了您尝试做的事情:

>>> my_dict = {}
>>> my_dict.setdefault('numbers', []).extend([1, 2, 3])
>>> my_dict
{u'numbers': [1, 2, 3]}
>>> my_dict.setdefault('numbers', []).append(4)
>>> my_dict
{u'numbers': [1, 2, 3, 4]}
如果 缺失,

setdefault会获取一个(可能缺少的)密钥和默认值来初始化它。如果密钥已经存在,则只返回它。

正如John Kugelman在评论中指出的那样,这也可以通过defaultdict以正常方式完成:

>>> from collections import defaultdict
>>> my_dict = defaultdict(list)
>>> my_dict
defaultdict(<type 'list'>, {})
>>> my_dict['numbers'].extend([1, 2, 3])
>>> my_dict
defaultdict(<type 'list'>, {u'numbers': [1, 2, 3]})
>>> my_dict['numbers'].append(4)
>>> my_dict
defaultdict(<type 'list'>, {u'numbers': [1, 2, 3, 4]})