我有两个清单,说:
a = ['A', 'B', 'C']
和
b = ['B/X', 'Y/C', 'A/Z']
如何有效地将列表压缩在一起以获得:
[('A', 'A/Z'), ('B', 'B/X'), ('C', 'Y/C')]
非常感谢!
答案 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')]