根据Python3中的键列表过滤字典列表

2024-04-23 16:16:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在Python3中过滤字典列表?在

results = [{'name':'jason','email':'test1@example.com'},
           {'name':'mike','email':'test2@example.com'},
           {'name':'eric','email':'test3@example.com'}]

allowed_keys = ['name']

我想我可以做些类似的事情:

^{pr2}$

但我得到一个错误:

>> AttributeError: 'list' object has no attribute 'items'

这是线程安全的吗?在


Tags: namecom列表字典exampleemailresultspython3
2条回答

鉴于您的澄清意见,“我想返回一个只包含关键字‘names’的词典列表:

>>> [{k: d[k] for k in allowed_keys} for d in results]
[{'name': 'jason'}, {'name': 'mike'}, {'name': 'eric'}]

注意:这个解决方案假设allowed_keys中的所有键都保证在结果中的每个字典中。如果没有,请这样做(但请注意,可能会出现一些空字典):

^{pr2}$

这一行有点乱,但在这里。 简而言之,您忘记添加一个外部循环来遍历所有字典。

new_results = [dict((k, v) for k, v in d.items() if k in allowed_keys) for d in results]

或许更具可读性的解决方案:

^{pr2}$

相关问题 更多 >