如何从dict列表中删除空dict为,
{
"ages":[{"age":25,"job":"teacher"},
{},{},
{"age":35,"job":"clerk"}
]
}
Run Code Online (Sandbox Code Playgroud)
我是python的初学者.提前致谢.
试试这个
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)
有一种比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)