我正在尝试从存储的列表创建 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
所以我想知道为什么使用追加的第一种方法有效,但第二种方法不起作用?之间有区别吗myList
and myList2
?
Edit
再次检查myList2
实际上有两个以上的元素。更新了第二个示例以反映这一点。
你这样做是错的。
The dict()
构造函数不接受项目列表(更不用说包含单个项目列表的列表),它接受 2 元素可迭代的可迭代。因此,如果您将代码更改为:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)