当前位置:  开发笔记 > 编程语言 > 正文

从字典列表中清除空字典

如何解决《从字典列表中清除空字典》经验,为你挑选了1个好方法。

我有一个像这样的词典列表:

[{'a':'21'},{},{'b':20'},{'c':'89'},{}]

清除此列表中空字典的最有效方法是什么,最终结果为:

[{'a':'21'},{'b':'20'},{'c':'89'}]

我尝试着:

new_list_of_dictionaries = []
for dictionary in list_of_dictionaries:
    if dictionary:
        new_list_of_dictionaries.append(dictionary)
return new_list_of_dictionaries

我不认为这可以用O(1)或其他东西来完成?



1> Martijn Piet..:

只需使用列表推导,并过滤布尔真值.空字典被视为false:

return [d for d in list_of_dictionaries if d]

在Python 2,你也可以使用filter()功能,使用None的过滤器:

return filter(None, list_of_dictionaries)

在Python 3中,它返回一个迭代器,而不是一个列表,因此你必须调用list()它(所以return list(filter(None, ...))),此时列表理解更具可读性.当然,如果你实际上不需要随机访问结果(所以直接索引访问result[whatever]),那么迭代器可能仍然是一个好主意.

请注意,这已经采取O(N)的时候,你必须测试每一个字典.即使列表具有某种自动更新的映射,使您可以在O(1)时间内获取字典的索引,但从列表中删除项目需要向后移动条目.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有