如何解决使用 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 举报,一经查实,本站将立刻删除。