如何根据条件压缩列表元素?
问题描述:
我有两个表,说:如何根据条件压缩列表元素?
a = ['A', 'B', 'C']
和
b = ['B/X', 'Y/C', 'A/Z']
如何有效地压缩名单合力得到:
[('A', 'A/Z'), ('B', 'B/X'), ('C', 'Y/C')]
非常感谢您!
答
你可以简单地先构造一个字典:
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
如果'b'中有一个元素'A/B'和'B/C'会怎么样?你选择哪一个元素? –
肯定没有。这就是为什么我没有写这些案例。 – AnnaR