从字典中删除空字符串的有效方法

我有一个字典,并希望删除所有有空值字符串的键。

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