Удаление записей из словаря на основе значений

У меня есть словарь с целым символом-значащей парой. Я хочу удалить все эти пары значений, где значение равно 0.

Например:

>>> hand {'a': 0, 'i': 0, 'm': 1, 'l': 1, 'q': 0, 'u': 0} 

Я хочу сменить тот же словарь:

 >>> hand {'m': 1, 'l': 1} 

Есть ли простой способ сделать это?

Вы можете использовать понимание dict :

 >>> { k:v for k, v in hand.items() if v } {'m': 1, 'l': 1} 

Или, в pre-2.7 Python, конструктор dict в сочетании с выражением генератора :

 >>> dict((k, v) for k, v in hand.iteritems() if v) {'m': 1, 'l': 1} 
 hand = {k: v for k, v in hand.iteritems() if v != 0} 

Для Pre-Python 2.7:

 hand = dict((k, v) for k, v in hand.iteritems() if v != 0) 

В обоих случаях вы отфильтровываете ключи, значения которых равны 0 , и назначая hand новому словарю.

Если вы не хотите создавать новый словарь, вы можете использовать это:

 >>> hand = {'a': 0, 'i': 0, 'm': 1, 'l': 1, 'q': 0, 'u': 0} >>> for key in list(hand.keys()): ## creates a list of all keys ... if hand[key] == 0: ... del hand[key] ... >>> hand {'m': 1, 'l': 1} >>> 

Понимание диктата?

 {k: v for k, v in hand.items() if v != 0} 

В python 2.6 и ранее:

 dict((k, v) for k, v in hand.items() if v != 0)