Pau*_*oon 2 python dictionary list
我需要过滤字典列表以仅保留具有名为“子项”的键的字典。下面是一个列表示例:
[{u'id': 5650, u'children': [{u'id': 4635}]}, {u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}, {u'id': 5649}]
Run Code Online (Sandbox Code Playgroud)
这是我需要获得的:
[{u'id': 5650, u'children': [{u'id': 4635}]}, {u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}]
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
dict((k, data[k]) for k in keys if k in data)
Run Code Online (Sandbox Code Playgroud)
而我得到的,这并不好:
[{u'children': [{u'id': 4635}]}, {u'children': [{u'id': 67}, {u'id': 77}]}, {}]
Run Code Online (Sandbox Code Playgroud)
有什么线索吗?提前致谢!
您可以使用filter()功能。它将需要 2 个参数filter(function, iterable)。只有那些函数返回的值才会被考虑。
a=[{u'id': 5650, u'children': [{u'id': 4635}]},
{u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]},
{u'id': 5649}]
print filter(lambda x: 'children' in x, a)
Run Code Online (Sandbox Code Playgroud)
输出:
[{u'id': 5650, u'children': [{u'id': 4635}]},
{u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}]
Run Code Online (Sandbox Code Playgroud)
filter(function, iterable) 相当于 [item for item in iterable if function(item)]