您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 比较字典列表

5b51 2022/1/14 8:21:48 python 字数 2249 阅读 529 来源 www.jb51.cc/python

我有两个测试结果列表.测试结果表示为词典:list1 = [{testclass='classname', testname='testname', testtime='...},...] list2 = [{testclass='classname', testname='testname', ...},...] 两个列表中的字典表示略有不同,因为对于一个

概述

我有两个测试结果列表.测试结果表示为词典:

list1 = [{testclass='classname',testname='testname',testtime='...},...]
list2 = [{testclass='classname',...},...]

两个列表中的字典表示略有不同,因为对于一个列表,我有一些
更多信息.但在所有情况下,任一列表中的每个测试字典都将具有classname和testname元素,这些元素有效地形成了唯一标识测试的方式以及跨列表进行比较的方法.

我需要找出list1中但不在list2中的所有测试,因为这些测试代表了新的测试失败.

要做到这一点,我做:

def get_new_failures(list1,list2):
    new_failures = []
    for test1 in list1:
        for test2 in list2:
            if test1['classname'] == test2['classname'] and \
                    test1['testname'] == test2['testname']:
                break; # Not new breakout of inner loop
        # Doesn't match anything must be new
        new_failures.append(test1);
    return new_failures;

我想知道这是一个更加Python的方式.我看过滤器.过滤器使用的函数需要获取两个列表的句柄.一个很容易,但我不确定如何处理这两个问题.我知道列表的内容直到运行时.

任何帮助,将不胜感激,

谢谢.

def get_new_failures(list1,list2):
    check = set([(d['classname'],d['testname']) for d in list2])
    return [d for d in list1 if (d['classname'],d['testname']) not in check]

总结

以上是编程之家为你收集整理的python – 比较字典列表全部内容,希望文章能够帮你解决python – 比较字典列表所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶