[英]Replace items in a Python list from another list
假设我有两个列表,
l1 = ['Join', 'logsource1.selection1', 'and', 'logsource2.selection3', 'AND', '((logsource1.selection2', '<=', 'contraint1)', 'AND', '(logsource2.selection4', '<=', 'constraint1))']
l2 = ['logsource1=Zscaler/Proxy', 'logsource2=Proofpoint/TAP']
如何从 l2 中获取值并在 l1 中替换,类似这样,
l3 = ['Join', 'Zscaler/Proxy.selection1', 'and', 'logsource2=Proofpoint/TAP.selection3', 'AND', '((Zscaler/Proxy.selection2', '<=', 'contraint1)', 'AND', '(Proofpoint/TAP.selection4', '<=', 'constraint1))']
尝试:
l2 = list(map(lambda x: x.split("="), l2))
def func(arr, el):
if(len(el)==0):
return list(arr)
else:
return func(map(lambda x: x.replace(*el[0]), arr), el[1:])
l1=func(l1, l2)
输出:
>>> l1
['Join', 'Zscaler/Proxy.selection1', 'and', 'Proofpoint/TAP.selection3', 'AND', '((Zscaler/Proxy.selection2', '<=', 'contraint1)', 'AND', '(Proofpoint/TAP.selection4', '<=', 'constraint1))']
使用帮助字典应该可以解决问题:
l1 = ['Join', 'logsource1.selection1', 'and', 'logsource2.selection3', 'AND', '((logsource1.selection2', '<=', 'contraint1)', 'AND', '(logsource2.selection4', '<=', 'constraint1))']
l2 = ['logsource1=Zscaler/Proxy', 'logsource2=Proofpoint/TAP']
l_help = {split_result[0]: split_result[1] for split_result in [e.split("=") for e in l2]}
l3 = l1.copy()
for key, value in l_help.items():
l3 = [e.replace(key, value) for e in l3]
Output 是:
['Join', 'Zscaler/Proxy.selection1', 'and', 'Proofpoint/TAP.selection3', 'AND', '((Zscaler/Proxy.selection2', '<=', 'contraint1)', 'AND', '(Proofpoint/TAP.selection4', '<=', 'constraint1))']
你可以试试这个
l1 = ['Join', 'logsource1.selection1', 'and', 'logsource2.selection3', 'AND', '((logsource1.selection2', '<=', 'contraint1)', 'AND', '(logsource2.selection4', '<=', 'constraint1))']
l2 = ['logsource1=Zscaler/Proxy', 'logsource2=Proofpoint/TAP']
l3=[]
for i in l1:
for j in l2:
k,v=j.split("=")
if k in i:
l3.append(i.replace(k,v))
break
else:
l3.append(i)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.