Python字典创建错误

Azi*_*zim 5 python python-2.5

我试图从存储列表中创建一个Python字典.第一种方法有效

>>> myList = []
>>> myList.append('Prop1')
>>> myList.append('Prop2')
>>> myDict = dict([myList])
Run Code Online (Sandbox Code Playgroud)

但是,以下方法不起作用

>>> myList2 = ['Prop1','Prop2','Prop3','Prop4']
>>> myDict2 = dict([myList2])
ValueError: dictionary update sequence element #0 has length 3; 2 is required
Run Code Online (Sandbox Code Playgroud)

所以我想知道为什么使用append的第一个方法有效但第二个方法不起作用?有没有之间的差异myListmyList2

编辑

再次检查myList2实际上有两个以上的元素.更新了第二个示例来反映这一点

Dan*_*den 13

你这样做是错的.

dict()构造并不需要的项目的列表(更不用说包含的项目的单列表的列表),它需要2元素iterables的迭代.因此,如果您将代码更改为:

myList = []
myList.append(["mykey1", "myvalue1"])
myList.append(["mykey2", "myvalue2"])
myDict = dict(myList)
Run Code Online (Sandbox Code Playgroud)

然后你会得到你期望的:

>>> myDict
{'mykey2': 'myvalue2', 'mykey1': 'myvalue1'}
Run Code Online (Sandbox Code Playgroud)

这是有效的原因:

myDict = dict([['prop1', 'prop2']])
{'prop1': 'prop2'}
Run Code Online (Sandbox Code Playgroud)

是因为它将它解释为包含一个元素的列表,该元素是包含两个元素的列表.

本质上,dict构造函数获取其第一个参数并执行类似于此的代码:

for key, value in myList:
    print key, "=", value
Run Code Online (Sandbox Code Playgroud)