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中,
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) |
在这两种情况下,你被过滤出
如果你不想创造一个新词典
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