如何删除字典列表中的空字典?

mad*_*a07 1 python

如何从dict列表中删除空dict为,

{
 "ages":[{"age":25,"job":"teacher"},
         {},{},
         {"age":35,"job":"clerk"}
        ]
}
Run Code Online (Sandbox Code Playgroud)

我是python的初学者.提前致谢.

itz*_*nTV 7

试试这个

In [50]: mydict = {
   ....:  "ages":[{"age":25,"job":"teacher"},
   ....:          {},{},
   ....:          {"age":35,"job":"clerk"}
   ....:         ]
   ....: }

In [51]: mydict = {"ages":[i for i in mydict["ages"] if i]}

In [52]: mydict
Out[52]: {'ages': [{'age': 25, 'job': 'teacher'}, {'age': 35, 'job': 'clerk'}]}
Run Code Online (Sandbox Code Playgroud)

或者只是使用filter

>>>mylist = [{'age': 25, 'job': 'teacher'}, {}, {}, {'age': 35, 'job': 'clerk'}]
>>>filter(None, mylist)
[{'age': 25, 'job': 'teacher'}, {'age': 35, 'job': 'clerk'}]
Run Code Online (Sandbox Code Playgroud)

所以在你的词典中,将其应用为

{
 "ages":filter(None, [{"age":25,"job":"teacher"},
         {},{},
         {"age":35,"job":"clerk"}
        ])
}
Run Code Online (Sandbox Code Playgroud)

  • 对于Python3,使用“list(filter(None, mylist))” (2认同)

Cod*_*ker 6

如果您使用的是 Python 3,只需执行以下操作:

list(filter(None, your_list_name))

这将从您的列表中删除所有空字典。


Chr*_*nke 5

有一种比filter更简单、更直观的方法,它适用于 Python 2 和 Python 3:

您可以对字典进行“真值测试”来测试它是否为空:

>>> foo = {}
>>> if foo:
...   print(foo)
...
>>>
>>> bar = {'key':'value'}
>>> if bar:
...    print(bar)
...
{'key':'value'} 
Run Code Online (Sandbox Code Playgroud)

因此,您可以迭代mylist并使用 if 语句测试空字典:

>>> mylist = [{'age': 25, 'job': 'teacher'}, {}, {}, {'age': 35, 'job': 'clerk'}]
>>> [i for i in mylist if i]
[{'age': 25, 'job': 'teacher'}, {'age': 35, 'job': 'clerk'}]
Run Code Online (Sandbox Code Playgroud)