如何根据条件压缩列表的元素?

时间:2017-07-26 22:17:15

标签: python-3.x

我有两个清单,说:

a = ['A', 'B', 'C']

b = ['B/X', 'Y/C', 'A/Z']

如何有效地将列表压缩在一起以获得:

[('A', 'A/Z'), ('B', 'B/X'), ('C', 'Y/C')]

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以先简单地构建一个字典:

lookup = { ki : k for k in b for ki in k.split('/') }

然后使用list comprehension:

[(k,lookup.get(k)) for k in a]

如果None的元素没有匹配的子元素,则会在元组中添加b作为第二个元素。它将生成:

>>> [(k,lookup.get(k)) for k in a]
[('A', 'A/Z'), ('B', 'B/X'), ('C', 'Y/C')]