Python del if в словаре в одну строку - PullRequest
10 голосов
/ 21 февраля 2012

Есть ли однострочный способ сделать следующее?

myDict = {}
if 'key' in myDic:
    del myDic['key']

спасибо

Ответы [ 3 ]

20 голосов
/ 21 февраля 2012

Вы можете написать

myDict.pop(key, None)
2 голосов
/ 21 февраля 2012

Кроме метода pop всегда можно явно вызвать метод __delitem__ - который делает то же самое, что и del, но выполняется как выражение, а не как утверждение. Поскольку это выражение, его можно комбинировать со встроенным «if» (версия троичного оператора C на языке Python):

d = {1:2}

d.__delitem__(1) if 1 in d else None
0 голосов
/ 21 февраля 2012

Вы бы назвали это одним вкладышем:

>>> d={1:2}
>>> if 1 in d: del d[1]
... 
>>> d
{}
...