我有一个列表字典,它应该用默认键初始化。我猜,下面的代码不太好(我的意思是,它工作,但我不觉得它是用Python的方式写的):
d = {'a' : [], 'b' : [], 'c' : []}
所以我想用一些更像Python的东西,比如defaultict
:
d = defaultdict(list)
然而,我看过的每一个教程都是动态设置新键的,但在我的例子中,所有键都应该从一开始就定义好,我正在解析其他数据结构,只有当结构中的特定键也包含在我的字典中时,我才向字典中添加值。
如何设置默认密钥?
6条答案
按热度按时间brvekthn1#
从评论中,我假设你想要一个符合以下条件的字典:
1.初始化为一组键,每个键的列表值为空
1.具有defaultdict行为,可以为不存在的键初始化空列表
@Aaron_lab的方法是对的,但还有一种稍微干净一点的方法:
pod7payv2#
这已经很合理了,但是您可以通过使用标准键列表的dict解析来缩短时间。
rqcrx0a63#
如果你要预初始化空列表,就不需要 defaultdict,简单的指令解析就能清晰干净地完成任务:
sdnqo3pr4#
如果你知道你会使用一组相近的键(在你的例子中是['a ',' b','c']),你肯定可以使用上面的答案。
但是...
dd = defaultdict(list)
为您提供更多功能:d = {'a':[], 'b':[], 'c':[]}
。您可以将append
设置为defaultdict
中的"不存在"键:如果您这样做:
建议采取以下措施:
现在你有了一条法令,上面有三把钥匙:['a ',' b ',' c ']和空列表作为值,和您也可以将其附加到其他键,而无需显式地编写:追加前的
d['new_key'] = []
4jb9z9bj5#
您可以定义一个函数,该函数将返回带有预设键的
dict
。在[8]中:get_preset_dict()
输出[8]:
{'a': [], 'b': [], 'c': []}
在[18]中:get_preset_dict(关键字=[“a”,“e”,“i”,“o”,“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]}
mdfafbf16#
输出[3]:默认命令(列表,{'a ':[]、"b":[]、"c":[]、"d":[]、"e":[]})