2017-09-12 40 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 
相关问题