从字典中删除空字符串的有效方法
我有一个字典,并希望删除所有有空值字符串的键。
metadata = {u'Composite:PreviewImage': u'(Binary data 101973 bytes)',
u'EXIF:CFAPattern2': u''}
做这个的最好方式是什么?
Python 2.X
dict((k, v) for k, v in metadata.iteritems() if v)
Python 3.X
{k: v for k, v in metadata.items() if v is not None}
请注意,您的所有密钥都有值。 只是其中一些值是空字符串。 没有价值的字典中没有这样的关键字; 如果它没有价值,那就不会在字典中。
它可以比BrenBarn的解决方案更短(我认为更具可读性)
{k: v for k, v in metadata.items() if v}
经过Python 2.7.3测试。
如果您确实需要修改原始字典:
empty_keys = [k for k,v in metadata.iteritems() if not v]
for k in empty_keys:
del metadata[k]
请注意,我们必须制作空键的列表,因为我们无法在遍历整个字典时修改字典(正如您可能已经注意到的那样)。 但是,这比创建一本全新的字典更便宜(记忆方面),除非有很多空值的条目。
链接地址: http://www.djcxy.com/p/55191.html上一篇: Efficient way to remove keys with empty strings from a dict
下一篇: Determine function name from within an aliased function