Python 在字典上循环,搜索副本并将副本列表附加到列表中

Python 在字典上循环,搜索副本并将副本列表附加到列表中,python,loops,Python,Loops,我试图在字典上循环搜索副本,将这些副本(如果存在)添加到一个列表中,然后将该列表附加到另一个列表中,该列表将包含作为子列表的所有副本。例如 a、 jpg b.jpg和c.jpg都是同一张图片,都是副本。1.jpg和2.jpg也是同一张照片,因此每个照片的副本都是相同的,因此最终列表副本将包含两个子列表:副本=[[a.jpg,b.jpg,c.jpg],[1.jpg,2.jpg] 这是我的密码: def deal_with_dubs(): print("FILES: ", FILE_HASH

我试图在字典上循环搜索副本,将这些副本(如果存在)添加到一个列表中,然后将该列表附加到另一个列表中,该列表将包含作为子列表的所有副本。例如 a、 jpg b.jpg和c.jpg都是同一张图片,都是副本。1.jpg和2.jpg也是同一张照片,因此每个照片的副本都是相同的,因此最终列表
副本将包含两个子列表:
副本=[[a.jpg,b.jpg,c.jpg],[1.jpg,2.jpg]

这是我的密码:

def deal_with_dubs():
    print("FILES: ", FILE_HASH_DICTIONARY)
    for file1 in FILE_HASH_DICTIONARY:
        #print (str(file1))
        count = 0
        copy = []
        copy.append(file1)
        for file2 in FILE_HASH_DICTIONARY:
            if FILE_HASH_DICTIONARY[file1] == FILE_HASH_DICTIONARY[file2]:
                count = count +1
                if count > 1:copy.append(file2)


            if len(copy) > 1 and copies.__contains__(copy) == False:copies.append(copy)
    copies.sort()
    for n in copies:print(n)
我得到的结果是:

('FILES: ', {'stuff.jpg': '06a7c9413b2a36bf78dcc981f2f6873fa9a82e00', '2.jpg': '9687f69f124876cbdb98045617c37df46e13a594', 'test.py': '41ddcacda888fbb43791825fff6855de94c1e3fe', 'dubs.py': '574c4570038820d81bcbe4cf8cdadcf9db2c7820', 'Elliot.jpg': '0a3cbb6c58ad7f9ddcd40c7c73c02c75a012800f', '1.jpg': '9687f69f124876cbdb98045617c37df46e13a594', 'hello_friend.jpg': '06a7c9413b2a36bf78dcc981f2f6873fa9a82e00', 'blade15-2020-gallery-05.jpg': '06a7c9413b2a36bf78dcc981f2f6873fa9a82e00', '.DS_Store': '980b43f31413a0e94ae62ec9e5ec546bee9fe16b', 'nnnn.jpg': '06a7c9413b2a36bf78dcc981f2f6873fa9a82e00', 'test2.py': 'e05f020b979c5f03348d85dc138f7bed07101c6b', 'blah.jpg': '0a3cbb6c58ad7f9ddcd40c7c73c02c75a012800f'})
['1.jpg', '1.jpg']
['2.jpg', '1.jpg']
['Elliot.jpg', 'blah.jpg']
['blade15-2020-gallery-05.jpg', 'hello_friend.jpg', 'blade15-2020-gallery-05.jpg', 'nnnn.jpg']
['blah.jpg', 'blah.jpg']
['hello_friend.jpg', 'hello_friend.jpg', 'blade15-2020-gallery-05.jpg', 'nnnn.jpg']
['nnnn.jpg', 'hello_friend.jpg', 'blade15-2020-gallery-05.jpg', 'nnnn.jpg']
['stuff.jpg', 'hello_friend.jpg', 'blade15-2020-gallery-05.jpg', 'nnnn.jpg']
在捕获副本时(在这种情况下:

[Elliot.jpg, blah.jpg], 
['blade15-2020-gallery-05.jpg', 'hello_friend.jpg', 'blade15-2020-gallery-05.jpg', 'nnnn.jpg'] and['2.jpg', '1.jpg'], there are multiple file copies, like [1.jpg, 1.jpg])

我已经尝试过解决这个问题,但我不明白为什么它会列出一个重复的列表。

这就是您要找的吗

files={'stuff.jpg':'06a7c9413b2a36bf78dcc981f2f6873fa9a82e00',
‘2.jpg’:‘9687f69f124876cbdb98045617c37df46e13a594’,
“test.py”:“41ddcacda888fbb43791825fff6855de94c1e3fe”,
“dubs.py”:“574c4570038820d81bcbe4cf8cdadcf9db2c7820”,
'Elliot.jpg':'0a3cbb6c58ad7f9ddcd40c7c73c02c75a012800f',
‘1.jpg’:‘9687f69f124876cbdb98045617c37df46e13a594’,
“你好”\u friend.jpg:“06a7c9413b2a36bf78dcc981f2f6873fa9a82e00”,
“blade15-2020-gallery-05.jpg”:“06a7c9413b2a36bf78dcc981f2f6873fa9a82e00”,
“.DS_商店”:“980b43f31413a0e94ae62ec9e5ec546bee9fe16b”,
‘nnnn.jpg’:‘06a7c9413b2a36bf78dcc981f2f6873fa9a82e00’,
‘test2.py’:‘e05f020b979c5f03348d85dc138f7bed07101c6b’,
'blah.jpg':'0a3cbb6c58ad7f9ddcd40c7c73c02c75a012800f'}
从集合导入defaultdict
def处理副本(文件):
hash_to_names=defaultdict(列表)
对于名称,在files.items()中散列k:
将\u散列到\u名称[hash\u k]。追加(名称)
副本=[]
对于哈希_到_names.values()中的名称:
如果len(名称)>1:
names.sort()
副本。附加(名称)
打印(份)
处理配音(文件)
输出:

[['blade15-2020-gallery-05.jpg', 'hello_friend.jpg', 'nnnn.jpg', 'stuff.jpg'], ['1.jpg', '2.jpg'], ['Elliot.jpg', 'blah.jpg']]