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