Python-比较两个dict列表并从一个列表返回dict
我有两个列表,Python-比较两个dict列表并从一个列表返回dict,python,list,dictionary,Python,List,Dictionary,我有两个列表,a=[dict1,dict2,dict3]和b=[dict1,dict2,dict4,dict5,dict6] 我想再创建两个列表,其中两个列表中的dict在另一个列表中找不到。所以他们会 c = [dict3] and d = [dict4, dict5] 我试过以下几点,但很多格言都是如此 for i, j in [(i,j) for i in range(len(a)) for j in range(len(b))]: if cmp(b[j],a[i]) == 1
a=[dict1,dict2,dict3]
和b=[dict1,dict2,dict4,dict5,dict6]
我想再创建两个列表,其中两个列表中的dict在另一个列表中找不到。所以他们会
c = [dict3] and d = [dict4, dict5]
我试过以下几点,但很多格言都是如此
for i, j in [(i,j) for i in range(len(a)) for j in range(len(b))]:
if cmp(b[j],a[i]) == 1 or -1:
new_prods = {}
new_prods = a[i]
c.append(new_prods)
for i, j in [(i,j) for i in range(len(a)) for j in range(len(b))]:
if cmp(b[j],a[i]) == 0:
old_prods = {}
old_prods = b[j]
d.append(old_prods)
提前感谢一个简单的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]
一个简单的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)
在我看来,在这种情况下,使用集合将非常有意义,只需通过列表(c)和列表(d)将集合包装即可将其转换为列表
c = set(a).difference(b)
d = set(b).difference(a)
您可以通过简单地按列表(c)和列表(d)包装这些集合,将它们转换为列表。这里有一种替代方法,可以重复使用函数:
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)
编写一个函数有助于您以后在不重写整个函数的情况下,使用一组不同的字典列表再次重用该函数
这将返回:
c = [dict3]
d = [dict4, dict5, dict6]
下面是一种重复使用函数的替代方法:
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)
编写一个函数有助于您以后在不重写整个函数的情况下,使用一组不同的字典列表再次重用该函数
这将返回:
c = [dict3]
d = [dict4, dict5, dict6]
你可以提供例子和结果吗?在你的例子中,为什么
d
不包含dict6
呢?你可以提供例子和结果吗?在你的例子中,为什么d
不包含dict6
呢?这也很好,因为In在线性时间O(n)中运行。我很好奇,是什么让你相信它在线性时间中运行呢?实际上,我被纠正了。if语句中的“notin”是另一个循环。所以它是以二次时间运行的。使其成为O(m+n)的一种方法是使用集合进行成员资格测试。可能还有其他方法,但谁知道呢?这也很好,因为在线性时间O(n)中运行。我很好奇,是什么让你相信这是在线性时间中运行的?事实上,我是正确的。if语句中的“notin”是另一个循环。所以它是以二次时间运行的。使其成为O(m+n)的一种方法是使用集合进行成员资格测试。也许还有其他方法,但谁知道呢?嗨,维姆。是的,我有。它起作用了。这里有一个例子<代码>>>a=[1,2,3]>b=[1,2,4,5,6]
[3]
[4,5,6]
您正在尝试整数。你用dicts试过了吗?谢谢@wim。你说得对,我的方法不适用于字典。嗨@wim。是的,我有。它起作用了。这里有一个例子<代码>>>a=[1,2,3]
>b=[1,2,4,5,6]
[3]
[4,5,6]
您正在尝试整数。你用dicts试过了吗?谢谢@wim。你说得对,我的方法不适用于字典。