gpt4 book ai didi

python - 比较字典列表

转载 作者:太空狗 更新时间:2023-10-30 00:33:30 26 4
gpt4 key购买 nike

我有两个测试结果列表。测试结果表示为字典:

list1 = [{testclass='classname', testname='testname', testtime='...},...]
list2 = [{testclass='classname', testname='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 - 比较字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9054365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com