2017-07-26 63 views
-1

我有兩個表,說:如何根據條件壓縮列表元素?

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

回答

0

你可以簡單地先構造一個字典:

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