Python:Dictionary作为List Initi的值

2024-10-04 11:21:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个字典,其中值是一个列表。现在,每一个新的传入键,我想开始一个新的列表。 如果我只是尝试附加到dictionary键值,它会显示一个错误,因为该值还没有声明为一个列表,而且我不能在一开始就这样做,因为我不知道会有多少个键。 例如(注意MyDictkeyList是变量,这是以前不知道的)

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]]}

有办法吗


Tags: keyin声明列表fordictionary字典错误
3条回答

您可以使用setdefault

而不是MyDict[key[0]].append(key[1:])

尝试使用MyDict.setdefault(key[0],[]).append(key[1:])

因此,当您尝试附加值时,如果该列表不存在,它将创建一个默认列表,然后向其附加值

使用collections.defaultdict。示例:

from collections import defaultdict
d = defaultdict(lambda: [])
d['key'].append('value to be add in list')

旁注:Defaultdict接受一个可调用参数,这意味着您也可以通过以下方式创建dict:

defaultdict(list)

您需要的是defaultdict,它与Python一起提供正是为了这个目的:

keyList = [['a',1,2],['b',3,4]]
MyDict=defaultdict(list)
for key in keyList:
    MyDict[key[0]].append(key[1:])

print(MyDict)

输出

defaultdict(<class 'list'>, {'b': [[3, 4]], 'a': [[1, 2]]})

defaultdict在其构造函数中获取一个函数,该函数在没有参数的情况下被调用以创建默认元素^{<没有参数的cd3>}会创建一个空列表

defaultdict在其他方面的行为与普通字典类似。 然而,如果最终您想要一个简单的dict,那么使用dict转换它:

print(dict(MyDict))

给予

{'b': [[3, 4]], 'a': [[1, 2]]}

相关问题 更多 >