gpt4 book ai didi

python - 通过嵌入字典的列表进行过滤

转载 作者:行者123 更新时间:2023-11-30 21:59:24 27 4
gpt4 key购买 nike

我有一个 json 格式列表,每个列表中都有一些字典,如下所示:

[{"id":13, "name":"Albert", "venue":{"id":123, "town":"Birmingham"}, "month":"February"},
{"id":17, "name":"Alfred", "venue":{"id":456, "town":"London"}, "month":"February"},
{"id":20, "name":"David", "venue":{"id":14, "town":"Southampton"}, "month":"June"},
{"id":17, "name":"Mary", "venue":{"id":56, "town":"London"}, "month":"December"}]

列表中的条目数量最多可达 100 个。对于那些以伦敦为城镇的条目,我计划显示每个条目的“名称”,一次一个结果。其余的对我来说没有用。我是 python 的初学者,所以我希望得到关于如何有效地解决这个问题的建议。我最初认为最好删除所有没有伦敦的条目,然后我可以一一浏览它们。

我还想知道不过滤而是循环整个 json 并选择城镇为伦敦的条目名称是否会更快。

最佳答案

您可以使用filter:

data = [{"id":13, "name":"Albert", "venue":{"id":123, "town":"Birmingham"}, "month":"February"},
{"id":17, "name":"Alfred", "venue":{"id":456, "town":"London"}, "month":"February"},
{"id":20, "name":"David", "venue":{"id":14, "town":"Southampton"}, "month":"June"},
{"id":17, "name":"Mary", "venue":{"id":56, "town":"London"}, "month":"December"}]

london_dicts = filter(lambda d: d['venue']['town'] == 'London', data)
for d in london_dicts:
print(d)

这是尽可能高效的,因为:

  • 循环是用 C 编写的(如果是 CPython)
  • filter 返回一个迭代器(Python 3 中),表示将结果按要求一一加载到内存

关于python - 通过嵌入字典的列表进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com