Как удалить пару ключ / значение в словаре Python? - PullRequest
0 голосов
/ 02 декабря 2018

Скажите, у меня есть словарь, подобный этому:

d = {'ben' : 10, 'kim' : 20, 'bob' : 9}

Есть ли способ удалить пару слов, как ('bob',9) из словаря?Я уже знаю о d.pop('bob'), но это удалит пару, даже если значение было чем-то отличным от 9.

Прямо сейчас единственный способ, которым я могу думать, - это что-то вроде этого:

if (d.get('bob', None) == 9):
    d.pop('bob')

а есть ли более простой способ?возможно, вообще не используется

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Вы хотите выполнить две операции здесь

1) Вы хотите проверить условие d ['bob'] == 9.2) Вы хотите удалить ключ вместе со значением, если 1-й ответ верен.

Таким образом, мы не можем опустить тестирующую часть, которая требует использования if вообще.Но мы, безусловно, можем сделать это в одну строку.

d.pop ('bob'), если d.get ('bob') == 9 else Нет

0 голосов
/ 02 декабря 2018

pop также возвращает значение, поэтому с точки зрения производительности (как можно пренебрежимо малым) и читабельности лучше использовать del.

Кроме этого я недумаю, что есть что-то более легкое / лучшее, что вы можете сделать.

from timeit import Timer


def _del():
    d = {'a': 1}
    del d['a']


def _pop():
    d = {'a': 1}
    d.pop('a')

print(min(Timer(_del).repeat(5000, 5000)))
# 0.0005624240000000613
print(min(Timer(_pop).repeat(5000, 5000)))
# 0.0007729860000003086
...