我正在尝试构建一个包含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'
连连呢?感谢。
答案 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]})