4 回答
TA貢獻1851條經驗 獲得超4個贊
不同之處在于,list在大多數情況下這是不必要的,甚至可能是有害的。
該.items()方法返回數據的“視圖”。根據文檔:
、 和
dict.keys()返回的對象是視圖對象。它們提供字典條目的動態視圖,這意味著當字典更改時,視圖會反映這些更改。dict.values()dict.items()
當您將其包裝在 中時,情況并非如此,list它保留了創建列表時出現的鍵/值/項目。
list()一般來說,如果您使用 進行迭代,則不應使用 版本for。它充其量是多余的,會給代碼帶來不必要的視覺混亂。
TA貢獻1876條經驗 獲得超6個贊
很明顯,區別在于 的使用list。
第一種方法更可取,因為example_dict.items()?返回一個字典視圖并for k,v in example_dict.items():“直接”迭代項目。
實際上for k,v in list(example_dict.items()):你做了2 次迭代。首先,程序執行一個循環將項目轉換為列表。然后執行第二個循環來迭代列表。所以這是沒有必要的。
TA貢獻1824條經驗 獲得超6個贊
這里的區別在于數據類型。迭代時你不會看到它,但正常打印時你會看到它:
d = {1: "first", 2: "second", 3: "third"}
d.items()
dict_items([(1, 'first'), (2, 'second'), (3, 'third')])
list(d.items())
[(1, 'first'), (2, 'second'), (3, 'third')]
在最后一個我將 dict 對象(使用 items() 方法)放入列表中并輸出它
TA貢獻1869條經驗 獲得超4個贊
根據定義,aniterable是任何能夠一次返回一個成員的 Python 對象,從而允許它在循環中進行迭代for。
Alist是一個iterable,但是該方法dict.items()已經返回返回list字典條目的視圖或視圖,具體取決于所使用的語言的版本。
Python2
如果您調用list()a?list,例如從中生成的一個,dict.items()則會返回一個淺副本,這意味著您將list通過最里面列表的元素創建一個新副本。
添加回答
舉報
