根据值从字典中删除条目

时间:2013-03-01 13:11:10

标签: python

我有一个字符整数键值对的字典。我想删除值为0的所有键值对。

例如:

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

我想将相同的字典缩减为:

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

有一种简单的方法吗?

4 个答案:

答案 0 :(得分:22)

您可以使用dict comprehension

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

或者,在2.7之前的Python中,dict构造函数与generator expression结合使用:

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

答案 1 :(得分:9)

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分配给新词典。

答案 2 :(得分:7)

如果您不想创建新词典,可以使用:

>>> 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}
>>> 

答案 3 :(得分:2)

字典理解?

{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)
相关问题