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
通過最里面列表的元素創建一個新副本。
添加回答
舉報