各位大侠,有一个关于优化的问题。给定一个元组列表,例如:
a = [(1,5,6), (7,8,9), (10,12,4)]
我马上预定,现实生活中元组有几百万个,每个元组有七个元素,这个例子只是一个例子,为了便于理解。
有必要将这个元组列表转换为列表字典,以便元组的所有零元素成为一个列表,第一个元素 - 下一个列表,第三个 - 下一个......键将被手动设置。像这样:
a_d = {'key1':[1,7,10], 'key2':[5,8,12], 'key3':[6,9,4]}
我知道如何解决这个问题Pandas。是这样的:
import pandas as pd
a = [(1,5,6), (7,8,9), (10,12,4)]
a_d = {key: list(val) for key, val in dict(pd.DataFrame(a, columns=['key1', 'key2', 'key3'])).items()}
有两个问题:
- 有没有一种方法可以使用基本的 Python 和标准库来解决这个问题,而无需遍历所有元素。也许我缺少一些标准方法/功能。
- 这种方法会比上面描述的方法更快吗
Pandas?
谢谢。
结果:
关于“更快”的答案很容易通过测量代码的执行时间自己得到。但我建议你为此采用更大的数组,你可能不会得到三个或 9 个元素的差异,我不知道,我没试过。
PS 顺便说一句,请注意您在原始列表中有元组,因此您想要获取列表值。这是一个额外的转换。如果您对元组值感到满意,那么运算符将进一步简化为:
PPS 感谢评论中受人尊敬的 Stanislav Volodarskiy 的评论,代码进一步减少。我也认为执行时间。