如何用键初始化defaultdict?
问题描述:
我有一个列表字典,它应该使用默认键进行初始化。我想,下面的代码是不好的(我的意思是,它的工作原理,但我不觉得这是写在Python的方式):如何用键初始化defaultdict?
d = {'a' : [], 'b' : [], 'c' : []}
所以我想用的东西更Python一样defaultict
:
d = defaultdict(list)
但是,我看到的每个教程都会动态设置新密钥。但在我的情况下,所有的键都应该从头开始定义。我正在解析其他数据结构,并且只有当结构中的特定键也包含在我的字典中时,才会将值添加到我的字典中。
如何设置默认键?
答
这已经很合理了,但是可以缩短一点,使用标准的键列表来理解词典。
>>> standard_keys = ['a', 'b', 'c']
>>> d1 = {key:[] for key in standard_keys}
>>> d2 = {key:[] for key in standard_keys}
>>> ...
答
如果你要预先初始化为空列表,没有必要对defaultdict。简单的字典,理解变得清晰简洁地完成工作:
>>> {k : [] for k in ['a', 'b', 'c']}
{'a': [], 'b': [], 'c': []}
答
您可以定义将返回你dict
预设键的功能。
def get_preset_dict(keys=['a','b','c'],values=None):
d = {}
if not values:
values = [[]]*len(keys)
if len(keys)!=len(values):
raise Exception('unequal lenghts')
for index,key in enumerate(keys):
d[key] = values[index]
return d
在[8]:get_preset_dict()
缺货[8]:
{'a': [], 'b': [], 'c': []}
在[18]:get_preset_dict(键= [ '一个', 'E',” I”, '0', 'U'])
缺货[18]:
{'a': [], 'e': [], 'i': [], 'o': [], 'u': []}
在[19]:
get_preset_dict(keys=['a','e','i','o','u'],values=[[1],[2,2,2],[3],[4,2],[5]])
出[19]:
{'a': [1], 'e': [2, 2, 2], 'i': [3], 'o': [4, 2], 'u': [5]}
你想附加键自动创建后或你有全套从一开始? – tdelaney
如果您使用的是defaultdict,您为什么需要设置密钥?你想要什么样的行为,这个数据结构的用例是什么? – jonrsharpe
@tdelaney我想要从头开始全套。 – Amir