2017-09-12 82 views
0

我在這個格式如何將兩個數組進行比較以便與python返回匹配?

['tyuri:12345', 'hsksfd:58380', 'shskfks:49539'] 

一個數據集1,並以這種格式

['12345', '442342', '8053308'] 

我想dataset2比較數據集1,並有另一dataset2它返回

tyuri:12345 

我知道使用set()。intersection()來比較兩個數組並返回完全匹配。我將如何實現比較這兩個數組來產生所需的輸出?

回答

2

你可以試試這個:

a = ['tyuri:12345', 'hsksfd:58380', 'shskfks:49539'] 
b = ['12345', '442342', '8053308'] 
new_a = [i for i in a if any(i.endswith(c) for c in b)] 

輸出:

['tyuri:12345'] 

new_a,列表理解來找到具有存在於b尾隨數字的所有元素。要找到這些值,使用any()函數來確定是否包含b中包含的endswith()方法找到的一個或多個尾隨值。

+0

這個作品,你能解釋一下什麼是new_a回事?特別是與「任何(decendswith(c)」 – learner101

+0

@ learner101請看我最近的編輯。如果這個答案對你有幫助,請考慮接受它。謝謝! – Ajax1234

2

這是一種方法的互動演示:

bash-3.2$ python 
Python 2.7.12 (default, Nov 29 2016, 14:57:54) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> d1 = ['tyuri:12345', 'hsksfd:58380', 'shskfks:49539'] 
>>> d1 
['tyuri:12345', 'hsksfd:58380', 'shskfks:49539'] 
>>> d2 = ['12345', '442342', '8053308'] 
>>> d2 
['12345', '442342', '8053308'] 
>>> m1 = dict(map(lambda x:(x.split(":")[1],x),d1)) 
>>> m1 
{'49539': 'shskfks:49539', '58380': 'hsksfd:58380', '12345': 'tyuri:12345'} 
>>> for v in d2: 
...  if v in m1: 
...   print(m1[v]) 
... 
tyuri:12345 
相關問題