微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Python 字典确定要删除的重复图像

如何解决使用 Python 字典确定要删除的重复图像

我编写了一个脚本,可根据某些标准识别重复和接近重复的图像。结果放在字典中,其中键代表图像,值是重复图像。例如,对于 image0,有重复的图像 1-5。现在,我正在尝试根据我的字典列出要删除的候选列表。我想保留字典中出现的第一张图像 (image0),删除图像 1-5,然后跳过键 1-5,因为这些图像已被删除。我该怎么做?或者有没有更好的方法来确定要删除的候选对象?

示例词典:

{0: [1,2,3,4,5],1: [0,2: [0,1,3: [0,4: [0,5: [0,4],6: [7,8,9,10,11],7: [6,8: [6,7,9: [6,10: [6,11: [6,10],12: [13,14,15,16,17],13: [12,14: [12,13,15: [12,16: [12,17: [12,16],18: [19,20,21,22,23],19: [18,20: [18,19,21: [18,22: [18,23: [18,22],24: [25,26,27,28,29],25: [24,26: [24,25,27: [24,28: [24,29: [24,28],30: [31,32,33,34,35],31: [30,32: [30,31,33: [30,34: [30,35: [30,34],36: [37,38,39],37: [36,38: [36,37,39: [36,38],40: [41,42,43],41: [40,42: [40,41,43: [40,42],44: [45,46],45: [44,46: [44,45]}

解决方法

如果您只想要列表,可以使用单行:

list_img = list(set([item for sublist in dic.values() for item in sublist]))

print (list_img)

输出:

[1,2,3,4,5,7,8,9,10,11,6,13,14,15,16,17,12,19,20,21,22,23,18,25,26,27,28,29,24,31,32,33,34,35,30,37,38,39,36,41,42,43,40,45,46,44]

否则:

img = {}; list_img = []

for key,values in dic.items():
    for i,value in enumerate(values):
        if str(value) not in img.keys():
            img[str(value)] = True
        else:
            values[i] = -1

dic = {key: [value for value in dic[key] if value != -1] for key in dic.keys()}

dic = {key: values for key,values in dic.items() if values != []}

for key in dic.keys():
    print (key,dic[key])
    list_img.append(dic[key])

list_img = [item for sublist in list_img for item in sublist]

print (list_img)

输出:

0 [1,5]
1 [0]
6 [7,11]
7 [6]
12 [13,17]
13 [12]
18 [19,23]
19 [18]
24 [25,29]
25 [24]
30 [31,35]
31 [30]
36 [37,39]
37 [36]
40 [41,43]
41 [40]
44 [45,46]
45 [44]

[1,44]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?