亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

迭代dictionary.items()與列表(dictionary.items())之間的區別

迭代dictionary.items()與列表(dictionary.items())之間的區別

子衿沉夜 2023-07-11 14:07:06
有什么區別(目標是提取k,v值)for k,v in example_dict.items():     print(k,v)     do_something與for k,v in list(example_dict.items()):     print(k,v)     do_something結果看起來一樣
查看完整描述

4 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

不同之處在于,list在大多數情況下這是不必要的,甚至可能是有害的。

.items()方法返回數據的“視圖”。根據文檔:

、 和dict.keys()返回的對象是視圖對象。它們提供字典條目的動態視圖,這意味著當字典更改時,視圖會反映這些更改。dict.values()dict.items()

當您將其包裝在 中時,情況并非如此,list它保留了創建列表時出現的鍵/值/項目。

list()一般來說,如果您使用 進行迭代,則不應使用 版本for。它充其量是多余的,會給代碼帶來不必要的視覺混亂。

查看完整回答
反對 回復 2023-07-11
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

很明顯,區別在于 的使用list。

第一種方法更可取,因為example_dict.items()?返回一個字典視圖并for k,v in example_dict.items():“直接”迭代項目。

實際上for k,v in list(example_dict.items()):你做了2 次迭代。首先,程序執行一個循環將項目轉換為列表。然后執行第二個循環來迭代列表。所以這是沒有必要的。


查看完整回答
反對 回復 2023-07-11
?
慕妹3242003

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() 方法)放入列表中并輸出它


查看完整回答
反對 回復 2023-07-11
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

根據定義,aniterable是任何能夠一次返回一個成員的 Python 對象,從而允許它在循環中進行迭代for。

Alist是一個iterable,但是該方法dict.items()已經返回返回list字典條目的視圖或視圖,具體取決于所使用的語言的版本。

Python2
如果您調用list()a?list,例如從中生成的一個,dict.items()則會返回一個淺副本,這意味著您將list通過最里面列表的元素創建一個新副本。


查看完整回答
反對 回復 2023-07-11
  • 4 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號