Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:字典的值为List-Initiate_Python - Fatal编程技术网

Python:字典的值为List-Initiate

Python:字典的值为List-Initiate,python,Python,我想创建一个字典,其中的值是一个列表。现在,随着每一个新的传入密钥,我想开始一个新的列表。 如果我只是简单地尝试附加到字典键值,它会显示一个错误,因为该值尚未声明为列表,并且我无法在开始时执行此操作,因为我不知道将有多少个键。 例如(请注意,MyDictkeyList是可变的,这是以前不知道的) 我想创建的是: MyDict={'a': [[1, 2]], 'b': [[3, 4]]} 有办法吗?您可以使用setdefault 而不是MyDict[key[0]]。追加(key[1:]) 尝试使

我想创建一个字典,其中的值是一个列表。现在,随着每一个新的传入密钥,我想开始一个新的列表。 如果我只是简单地尝试附加到字典键值,它会显示一个错误,因为该值尚未声明为列表,并且我无法在开始时执行此操作,因为我不知道将有多少个键。 例如(请注意,
MyDict
keyList
是可变的,这是以前不知道的)

我想创建的是:

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

有办法吗?

您可以使用
setdefault

而不是
MyDict[key[0]]。追加(key[1:])

尝试使用
MyDict.setdefault(键[0],])。append(键[1])


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

您可以使用
setdefault

而不是
MyDict[key[0]]。追加(key[1:])

尝试使用
MyDict.setdefault(键[0],])。append(键[1])


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

您需要的是
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
,它与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]]})
给予


使用collections.defaultdict。例如:

from collections import defaultdict
d = defaultdict(lambda: [])
d['key'].append('value to be add in list')
旁注:Defaultdict接受一个可调用的参数,这意味着您也可以通过以下方式创建dict:

defaultdict(list)

使用collections.defaultdict。例如:

from collections import defaultdict
d = defaultdict(lambda: [])
d['key'].append('value to be add in list')
旁注:Defaultdict接受一个可调用的参数,这意味着您也可以通过以下方式创建dict:

defaultdict(list)

是的,有。到目前为止你试过什么吗?使用defaultdict,
MyDict=defaultdict(list)
是的。到目前为止您尝试过什么吗?使用defaultdict,
MyDict=defaultdict(list)