我有一个列表和元组列表。我正在尝试将它们压缩成一个包含三个“列”的列表。这就是我所拥有的:
splitKeys=[['259', ' 46'], ['281', ' 71'], ['49', ' 13378']]
data=(2.2217806892532197, 1.1757204348143286, 0.55)
b=zip(splitKeys, data)
但是,我明白了:
[(['259', ' 46'], 2.2217806892532197), (['281', ' 71'], 1.1757204348143286),
(['49', '13378'], 0.55)]
当我真的想要这个时:
[('259', ' 46', 2.2217806892532197), ('281', ' 71', 1.1757204348143286),
('49', '13378], 0.55)]
我尝试了一些使用map
和lambda
的不同方法,但我仍然得到上面提到的不良输出。
思想?
答案 0 :(得分:4)
你想:
b = [(a, b, c) for (a, b), c in zip(splitKeys, data)]
答案 1 :(得分:0)
您可以在使用生成器表达式进行压缩之前暂时解压缩列表:
b = zip((k[0] for k in splitKeys), (k[1] for k in splitKeys), data)
输出:
b
Out[4]:
[('259', ' 46', 2.2217806892532197),
('281', ' 71', 1.1757204348143286),
('49', ' 13378', 0.55)]