簡體   English   中英

Python字典創建錯誤

[英]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的第一個方法有效但第二個方法不起作用? myListmyList2之間有區別嗎?

編輯

再次檢查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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM