我想從Python字典中刪除一些鍵。密鑰在列表中提供;到目前爲止我的代碼:從Python字典中刪除鍵
my_keys = [2,4]
my_dict = {1:"aaaa" , 2: "bbb", 3:"ccc", 4:"ddd" }
for number in my_keys:
for key, value in my_dict.items():
if key == number:
del my_dict[(key)]
我想從Python字典中刪除一些鍵。密鑰在列表中提供;到目前爲止我的代碼:從Python字典中刪除鍵
my_keys = [2,4]
my_dict = {1:"aaaa" , 2: "bbb", 3:"ccc", 4:"ddd" }
for number in my_keys:
for key, value in my_dict.items():
if key == number:
del my_dict[(key)]
您可以使用字典理解,就像這樣:
{x:y for x,y in my_dict.items() if x not in my_keys}
由於e0k和njzk2建議的意見,如果你樂意修改現有的字典,以下工作得更好:
for key in my_keys:
try:
del my_dict[key]
except KeyError:
pass # Key wasn't in the dictionary at all.
修改現有的'dict'可能比創建一個新的更有效。 – e0k
@ e0k肯定的,這是njzk2在他的評論中已經提出的,我會加入它。 – ffledgling
這裏是你如何在地方做到這一點:
>>> my_keys = [2,4]
>>> my_dict = {1:"aaaa" , 2: "bbb", 3:"ccc", 4:"ddd" }
>>> for key in my_keys:
... del my_dict[key]
...
>>> my_dict
{1: 'aaaa', 3: 'ccc'}
一點題外話:要刪除密鑰,並獲得價值,使用dict.pop
>>> x = my_dict.pop(1)
>>> x
'aaaa'
>>> my_dict
{3: 'ccc'}
你可以使用範圍爲2步,然後刪除範圍內的每個值的每個關鍵。您也可以使用map
,這是一個很棒的功能。
map(my_dict.pop, [2,4])
如果你想趕上一個錯誤的關鍵不是在字典中,使用這樣一個lambda函數:
map(lambda x: my_dict.pop(x, None), [2,4])
爲什麼第二次循環?爲什麼不簡單地'del my_dict [數字]'? – njzk2
@ njzk2可能是因爲密鑰可能在字典中,也可能不在字典中。 – ffledgling
@ffledgling好點 – njzk2