2013-10-14 3 views
2

Я ищу периоды "." в словаре и пытается удалить пару ключ/значение, если я найду егоудаление пар значений ключа путем сопоставления значений python

if "." in dict.values(): 
    #delete key, value pair from the dictionary 

Я уверен, что это очень просто, но я не могу показаться, чтобы найти объяснение. Спасибо за помощь.

+2

'{ключ: значение для ключа, значение в dict_obj.items() if '.' не в значении} ' – falsetru

ответ

5

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

>>> old_dict = {'one': '.', 'two': 2, 'three':3, 'four':'.'} 
>>> new_dict = {k:v for k,v in old_dict.iteritems() if not v == '.'} 
>>> new_dict 
{'three': 3, 'two': 2} 

использованием iteritems вместо items избегает создания промежуточного списка и повышает производительность.

1

Если вы не хотите, чтобы скопировать словарь, (например, если словарь велик, или у вас есть ссылки на него в другом месте), то вы должны сделать это таким образом:

ks = [k for k in d if d[k]=='.'] 
for k in ks: 
    d.pop(k) 

Создайте свой список ключей, которые нужно удалить раньше времени, как показано выше. Вы не хотите изменять словарь во время итерации по нему.

Смежные вопросы