首页 > 解决方案 > 基于共享值连接列表

问题描述

我有以下两个列表,l1并且l2.

l1 = [('8012387', {'key': values}), ('10556298', {'key': values}), ...]
l2 = [('8012387', 'TextA'), ('10556298', 'TextB'), ...]

我想组合这两个列表,这样我将拥有以下内容。

[('TextA', {'key': values}), ('textB', {'key': values}), ...]

我不知道如何开始。

标签: pythonlist

解决方案


您可以制作l2一个 dict 来查找键,然后使用列表理解构建您想要的列表:

l1 = [('8012387', {'key': 'values'}), ('10556298', {'key': 'values2'})]
l2 = [('8012387', 'TextA'), ('10556298', 'TextB')]

d_l2 = dict(l2)

[(d_l2[k], obj) for k, obj in l1]
# [('TextA', {'key': 'values'}), ('TextB', {'key': 'values2'})]

这假设所有键都存在于l2. 如果不是,则必须定义在这种情况下所需的行为。

如果列表对齐(即l2[0] 对应于l1[0]等)。你可以压缩它们:

[(k, v) for (_1, v), (_2, k) in  zip(l1, l2)]

推荐阅读