簡體   English   中英

Python使用列表推導從字典中刪除

[英]Python deleting from a dictionary using list comprehensions

我正在努力成為一名優秀的 Pythonista,並在可能的情況下使用列表推導式...

為什么這不起作用?

[del my_dict[r] for r in to_remove]

目標是從我的 dict 對象my_dict刪除列表to_remove中的條目:

for r in to_remove:
  del my_dict[r]

工作正常,但我正在嘗試使用列表理解來做到這一點

您不應該對副作用使用列表推導式,它不是 Pythonic。

應該使用一個簡單的 for 循環。

因為del X是一個不打算這樣使用的語句。 它在語法上是不正確的。

只是:

for r in to_remove:
    del my_dict[r]
  1. 你沒有從這里的列表理解中獲得任何東西,因為你不是在追求一個新的列表。
  2. del 不是一個函數,所以你不能將它作為列表理解的一部分來調用。

基本上,只需遍歷列表即可:

for r in to_remove:
    del my_dict[r]

可以這樣做,但我會聽 jamylak。 當然,這是返回一個列表,而不是從my_dict刪除

my_dict = [x for x in my_dict if x not in to_remove]

你可以:

[my_dict.pop(r) for r in to_remove]

.pop返回已刪除鍵的值,它會比del見這里)慢一點,而不是最“pythonic”的方式來做到這一點。 所以你可能不應該像其他人所建議的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM