从另一本词典中删除重复值

时间:2018-06-30 22:43:00

标签: python

我有两个字典,响应就像

    Array1= {'date': '30-06-18     22:23:01 (UTC)', 'FullName': 'NoMatch', 'image': 'Events/mili/DSC_0150.jpg', 'EventName': 'mili'}
               ,{'date': '30-06-18     22:23:01 (UTC)', 'FullName': 'NoMatch', 'image': 'Events/mili/DSC_0154.jpg', 'EventName': 'mili'} 



     Array2= {'date': '30-06-18     22:23:01 (UTC)', 'FullName': 'NoMatch', 'image': 'Events/mili/DSC_0151.jpg', 'EventName': 'mili'}
               ,{'date': '30-06-18     22:23:01 (UTC)', 'FullName': 'NoMatch', 'image': 'Events/mili/DSC_0154.jpg', 'EventName': 'mili'} 

和其他字典中的方法一样,我要这样做是要使Array1没有Array2 [k] ['image']相同的值。表示array2中不应包含array2的映像。

结果字典应为

Array3 = {'date': '30-06-18     22:23:01 (UTC)', 'FullName': 'NoMatch', 'image': 'Events/mili/DSC_0150.jpg', 'EventName': 'mili'}

我试图这样做

list3 = [item for item in list1 if item not in list2]

但是我无法在此循环中访问索引和值

2 个答案:

答案 0 :(得分:0)

在这里,我们构建了一组要排除的图像,然后构建了结果列表。

array2_images = set(item['image'] for item in Array2)
array3 = [item for item in Array1 if item['image'] not in array2_images]
# [{'date': '30-06-18     22:23:01 (UTC)', 'EventName': 'mili', 'FullName': 'NoMatch', 'image': 'Events/mili/DSC_0150.jpg'}]

答案 1 :(得分:0)

您需要比较imageArray2中的Array1值。列表理解可以这样:

temp = [i['image'] for i in Array2]

print([i for i in Array1 if i['image'] not in temp])