要扩展评论试图表达的内容,您应该使用生成器而不是列表理解。您的代码当前如下所示:
[dict(zip(small_list1, small_list2)) for small_list2 in really_huge_list_of_list]
你应该把它改成这样:
def my_generator(input_list_of_lists):
small_list1 = ["wherever", "small_list1", "comes", "from"]
for small_list2 in input_list_of_lists:
yield dict(zip(small_list1, small_list2))
你现在正在做的是获取迭代你真正巨大的列表的所有结果,并建立一个巨大的结果列表,然后再对结果列表执行任何操作。相反,您应该将该列表推导式转换为生成器,这样您就不必构建包含 200,000 个结果的列表。它正在构建占用大量内存和时间的结果列表。
...或者更好的是,只需将列表推导式转换为生成器推导式,只需将其外括号更改为括号即可:
(dict(zip(small_list1, small_list2)) for small_list2 in really_huge_list_of_list)
这就是你真正需要做的。列表推导和生成器推导的语法几乎是相同的,这是故意的:如果你理解了列表推导,你就会理解相应的生成推导。(在这种情况下,我首先以“长格式”写出生成器,以便您看到该理解扩展为什么)。
有关生成器推导的更多信息,请参见此处、此处和/或此处。
希望这可以帮助您在 Python 工具箱中添加另一个有用的工具!