关于python:根据值从字典中删除条目

Removing entries from a dictionary based on values

我有一本字典,上面有字符整键值对。我想删除所有那些值为0的键值对。

例如:

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

我想把同一本字典简化为:

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

有简单的方法吗?


你可以用一句理解的话:

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

然而,在Python前2.7中,dict的组合中,制造商:

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


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

For pre-python 2.7:

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

在这两种情况下,你被过滤出0的钥匙,并指定hand给新词典。


如果你不想创造一个新词典

1
2
3
4
5
6
7
8
>>> 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}
>>>


理解?

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

In Python 2.6 and Earlier:

ZZU1