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

问题描述:

我有两个表,说:如何根据条件压缩列表元素?

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

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

如何有效地压缩名单合力得到:

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

非常感谢您!

+1

如果'b'中有一个元素'A/B'和'B/C'会怎么样?你选择哪一个元素? –

+0

肯定没有。这就是为什么我没有写这些案例。 – AnnaR

你可以简单地先构造一个字典:

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

,然后使用列表理解:

[(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')] 
+0

非常感谢! – AnnaR