【问题标题】:Need to get match and mismatch result from two lists需要从两个列表中获取匹配和不匹配结果
【发布时间】:2018-01-11 14:40:35
【问题描述】:
list1 = ['ram', 'krishna', 'venkat','naran', 'vishnu']
list2 = ['ram', 'siva', 'venkat','sankar']


res = []
for li in list1:
    if li in list2:
        res.append((li, 'success'))
    else:
        res.append((li,'fail'))
print(res)

Result: [('ram', 'success'), ('krishna', 'fail'), ('venkat', 'success'), ('naran', 'fail'), ('Vishnu', 'fail')]

我需要匹配列表,list1 是固定的,需要匹配 list2 和 list1 并需要以下成功/失败的结果。请帮忙!

ram      ram        Success
krishna  siva       Fail
venkat   venkat     Success
naran    sankar     Fail
vishnu              Not available

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 抱歉错过了我的脚本,我已经更新了。

标签: python


【解决方案1】:

你可以使用itertools.izip_longest:

import itertools
list1 = ['ram', 'krishna', 'venkat','naran', 'vishnu']
list2 = ['ram', 'siva', 'venkat','sankar']
final_data = '\n'.join(["{}   {}   {}".format(a, b, ['Fail', 'Success'][a == b]) if None not in (a, b) else "{}    Not available".format(filter(None, (a, b))[0]) for a, b in itertools.izip_longest(list1, list2)])

输出:

ram   ram   Success
krishna   siva   Fail
venkat   venkat   Success
naran   sankar   Fail
vishnu    Not available

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多