4 回答

TA貢獻1851條經(jīng)驗 獲得超4個贊
不同之處在于,list
在大多數(shù)情況下這是不必要的,甚至可能是有害的。
該.items()
方法返回數(shù)據(jù)的“視圖”。根據(jù)文檔:
、 和
dict.keys()
返回的對象是視圖對象。它們提供字典條目的動態(tài)視圖,這意味著當字典更改時,視圖會反映這些更改。dict.values()
dict.items()
當您將其包裝在 中時,情況并非如此,list
它保留了創(chuàng)建列表時出現(xiàn)的鍵/值/項目。
list()
一般來說,如果您使用 進行迭代,則不應使用 版本for
。它充其量是多余的,會給代碼帶來不必要的視覺混亂。

TA貢獻1876條經(jīng)驗 獲得超6個贊
很明顯,區(qū)別在于 的使用list
。
第一種方法更可取,因為example_dict.items()?返回一個字典視圖并for k,v in example_dict.items():
“直接”迭代項目。
實際上for k,v in list(example_dict.items()):
你做了2 次迭代。首先,程序執(zhí)行一個循環(huán)將項目轉(zhuǎn)換為列表。然后執(zhí)行第二個循環(huán)來迭代列表。所以這是沒有必要的。

TA貢獻1824條經(jīng)驗 獲得超6個贊
這里的區(qū)別在于數(shù)據(jù)類型。迭代時你不會看到它,但正常打印時你會看到它:
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條經(jīng)驗 獲得超4個贊
根據(jù)定義,aniterable
是任何能夠一次返回一個成員的 Python 對象,從而允許它在循環(huán)中進行迭代for
。
Alist
是一個iterable
,但是該方法dict.items()
已經(jīng)返回返回list
字典條目的視圖或視圖,具體取決于所使用的語言的版本。
Python2
如果您調(diào)用list()
a?list
,例如從中生成的一個,dict.items()
則會返回一個淺副本,這意味著您將list
通過最里面列表的元素創(chuàng)建一個新副本。
添加回答
舉報