比较2个列表中存在的String值的一部分

时间:2017-01-19 00:54:39

标签: python-2.7 list

下面的代码从List srchlist中提取一个特定值,并检查List rplzlist中的特定值。 list srchlist和rplzlist的内容如下所示。

srchlist = ["DD='A'\n", "SOUT='*'\n", 'PGM=FTP\n', 'PGM=EMAIL']
rplzlist = ['A=ZZ.VVMSSB\n', 'SOUT=*\n', 'SALEDB=TEST12']

我使用striptranslate的组合在' ='(相等)符号后面和单引号内提取字符功能。

srchlist中的元素只有' SOUT'与rplzlist匹配。

请告诉我为什么以下代码不起作用,还建议我更好地比较string中存在的list的一部分。

for ele in srchlist:
      sYmls = ele.split('=')
      vAlue = sYmls[1].translate(None,'\'')
      for elem in rplzlist:
      rPls = elem.split('=')
      if vAlue in rPls:
          print("vAlue")  

1 个答案:

答案 0 :(得分:0)

以下是您想要做的更加pythonic的方法:

>>> list(set([(i.split('='))[1].translate(None,'\'') for i in srchlist]) & set([j.split('=')[1] for j in rplzlist]))
['*\n']

我使用set(),然后将整个输出设为list,您可以使用.join()。 在set()内,给出了列表理解,它比正常的循环更快

使用join()replace()取代translate()的另一种解决方案:

>>> "".join(set([(i.split('='))[1].replace('\'','') for i in srchlist]) & set([j.split('=')[1] for j in rplzlist]))
'*\n'