Python与元素list(value, id)合并到元素: list(value, value2, id)

标签 python

你好,我有两个带有 id 的列表

[(u'0', 1), (u'3000', 2), (u'10000', 3), (u'20000', 4)]
[(u'2999', 1), (u'9999', 2), (u'19999', 3), (u'999999999', 4)]

两个列表的 ID 始终为 1, 2, 3, 4 我怎样才能合并列表以得到这样的东西:

[('0', '2999', 1), ('3000', '9999', 2), etc...]

有简单的方法吗?

我的意思是使用 zip 我会得到:

[((u'0', 1), (u'2999', 1)), ((u'3000', 2), (u'9999', 2)), ((u'10000', 3), (u'19999', 3)), ((u'20000', 4), (u'999999999', 4))]

但这不是我想要的。 我仍然想要上面的内容,但我真的不知道该怎么做。

最佳答案

如果您想在同一位置连接元素,您可以这样做:

[(a,b,key) for (a,key),(b,_) in zip(first_list, second_list)]

用法:

>>> A = [(u'0', 1), (u'3000', 2), (u'10000', 3), (u'20000', 4)]
>>> B = [(u'2999', 1), (u'9999', 2), (u'19999', 3), (u'999999999', 4)]
>>> [(a,b,key) for (a,key),(b,_) in zip(A,B)]
[(u'0', u'2999', 1), (u'3000', u'9999', 2), (u'10000', u'19999', 3), (u'20000', u'999999999', 4)]

如果具有相同“id”的元素可能不在同一位置,您可以使用 key=lambda x:x[1] 对它们进行排序,然后使用上面的列表理解。 或者,您可以使用 defaultdict(list),如 Ashwini 的答案。

关于Python与元素list(value, id)合并到元素: list(value, value2, id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062089/

相关文章:

python - 给定另一个索引号列表,将数字插入列表中

python - 如何将 Pandas Data Frame 中的所有数值相加得到一个值

python - 识别 GeoDataFrame 的缓冲边界

python - Dataframe 按特定列分组,其他列的 aggerage 比率?

python - 从 PDF python 中提取/识别表

python - 使用 BeautifulSoup 抓取网页链接标题和 URL

python - 转换为 float 而不舍入小数位

python - 安装 Pytorch cuda 后,torch.cuda.is_available() 显示 false。该怎么办?

python - 如何使 tiff z-stack 保存或添加元数据?

python - 按索引号向列 pandas 数据框添加值