[英]Python dictionary creation error
我試圖從存儲列表中創建一個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的第一個方法有效但第二個方法不起作用? myList
和myList2
之間有區別嗎?
再次檢查myList2
實際上有兩個以上的元素。 更新了第二個示例來反映這一點
你這樣做是錯的。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.