Python字典创建

2024-10-02 00:27:28 发布

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

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

>>> myList = []
>>> myList.append('Prop1')
>>> myList.append('Prop2')
>>> myDict = dict([myList])

但是,以下方法不起作用

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

所以我想知道为什么第一个使用append的方法有效,而第二个方法无效?myListmyList2之间有区别吗?

编辑

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


Tags: 方法列表字典dictmydictvalueerrorappendprop1
1条回答
网友
1楼 · 发布于 2024-10-02 00:27:28

你做错了。

dict()构造函数不接受项列表(更不用说包含单个项列表的列表),它接受2元素的iterable。所以如果你把代码改成:

myList = []
myList.append(["mykey1", "myvalue1"])
myList.append(["mykey2", "myvalue2"])
myDict = dict(myList)

然后你会得到你想要的:

>>> myDict
{'mykey2': 'myvalue2', 'mykey1': 'myvalue1'}

这样做的原因是:

myDict = dict([['prop1', 'prop2']])
{'prop1': 'prop2'}

是因为它将它解释为一个包含一个元素的列表,而这个列表包含两个元素。

从本质上讲,dict构造函数接受其第一个参数并执行类似于以下内容的代码:

for key, value in myList:
    print key, "=", value

相关问题 更多 >

    热门问题