Python比较两个dict列表并从一个lis返回dict

2024-06-16 11:08:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表,a = [dict1, dict2, dict3]和b=[dict1, dict2, dict4, dict5, dict6]

我想再创建两个列表,两个列表中的dict在另一个列表中找不到。所以他们会是

c = [dict3] and d = [dict4, dict5]

我试过下面的方法,但它又回到了许多格言中

^{pr2}$

提前谢谢


Tags: and方法列表dict格言pr2dict1dict2
3条回答

一个简单的O(n^2)解决方案:

a = [dict1, dict2, dict3] 
b = [dict1, dict2, dict4, dict5, dict6]

c = dicts_from_a_not_in_b = [x for x in a if x not in b]
d = dicts_from_b_not_in_a = [x for x in b if x not in a]

在我看来,在这种情况下使用集合是非常合理的。在

c = set(a).difference(b)    
d = set(b).difference(a)

只需用list(c)和list(d)将集合包装起来,就可以将集合转换为list

以下是重用函数的另一种方法:

a = [dict1, dict2, dict3]
b = [dict1, dict2, dict4, dict5, dict6]

def find_uncommon_elements(list1, list2):
    list3 = []
    for item in list1:
        if item not in list2:
            list3.append(item)
    return list3

c = find_uncommon_elements(a,b)
d = find_uncommon_elements(b,a)

编写一个函数有助于以后使用不同的字典列表再次使用它,而不必重写整个函数。在

这将返回:

^{pr2}$

相关问题 更多 >