刪除我想成爲一個好pythonista和使用列表理解如果可能的話...Python從字典應用列表解析
爲什麼不這項工作?
[del my_dict[r] for r in to_remove]
的目標是從我的字典對象my_dict
這在列表中刪除to_remove
的條目:
for r in to_remove:
del my_dict[r]
工作正常,但我想用列表內涵做
刪除我想成爲一個好pythonista和使用列表理解如果可能的話...Python從字典應用列表解析
爲什麼不這項工作?
[del my_dict[r] for r in to_remove]
的目標是從我的字典對象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這應該是公認的答案,因爲它提到了真正的原因 – wim 2013-01-29 23:54:25
您可能做到這一點,但我聽jamylak。當然還有此函數返回一個新列表,而不是從my_dict
my_dict = [x for x in my_dict if x not in to_remove]
這也可以通過集合來完成,例如, 'set(my_dict.keys())。difference(to_remove)' – 2012-08-08 10:08:24
我只是給OP一個選項來看看。我明確提到這不是一個好的做法,問題在於_list理解_。不過感謝'set'選項,我以前從來沒有使用'差異'功能。 – Aesthete 2012-08-08 10:12:07
完全同意,剛剛評論過你沒有以這種方式使用套裝:) – 2012-08-08 10:13:59
基本上,只要遍歷列表,而不是:
for r in to_remove:
del my_dict[r]
列表理解用於從一箇舊列表創建一個新的列表,可能檢查的條件。爲了您的使用,您應該使用循環。 – 2012-08-08 10:05:04
@andy引導,併爲所有pythonista的緣故,閱讀[PEP8](http://www.python.org/dev/peps/pep-0008/)! – 2012-08-08 10:15:05