我有两个列表,a = [dict1, dict2, dict3]
和b = [dict1, dict2, dict4, dict5, dict6]
我想创建另外两个列表,两个列表中的dicts在另一个列表中找不到。所以他们会,
c = [dict3] and d = [dict4, dict5]
我尝试了以下内容,但它返回了许多dicts的方式
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)
提前致谢
答案 0 :(得分:4)
一个简单的 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]
答案 1 :(得分:0)
在我看来,在这种情况下使用套装会很有意义。
c = set(a).difference(b)
d = set(b).difference(a)
您可以通过简单地按列表(c)&amp ;;将它们转换为列表。列表(d)
答案 2 :(得分:0)
以下是重复使用函数的另一种方法:
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]