我想创建一个字典,其中值是一个列表。现在,每一个新的传入键,我想开始一个新的列表。
如果我只是尝试附加到dictionary键值,它会显示一个错误,因为该值还没有声明为一个列表,而且我不能在一开始就这样做,因为我不知道会有多少个键。
例如(注意MyDict
keyList
是变量,这是以前不知道的)
keyList = [['a',1,2],['b',3,4]]
MyDict={}
for key in keyList:
MyDict[key[0]].append(key[1:])
我想创造的是:
MyDict={'a': [[1, 2]], 'b': [[3, 4]]}
有办法吗
您可以使用
setdefault
而不是
MyDict[key[0]].append(key[1:])
尝试使用
MyDict.setdefault(key[0],[]).append(key[1:])
因此,当您尝试附加值时,如果该列表不存在,它将创建一个默认列表,然后向其附加值
使用collections.defaultdict。示例:
旁注:Defaultdict接受一个可调用参数,这意味着您也可以通过以下方式创建dict:
您需要的是
defaultdict
,它与Python一起提供正是为了这个目的:输出
defaultdict
在其构造函数中获取一个函数,该函数在没有参数的情况下被调用以创建默认元素^{<没有参数的cd3>}会创建一个空列表defaultdict
在其他方面的行为与普通字典类似。 然而,如果最终您想要一个简单的dict,那么使用dict
转换它:给予
相关问题 更多 >
编程相关推荐