gpt4 book ai didi

python - 如何使用 Python 使用 sqlite3 在元组中查找重复项?

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:28 26 4
gpt4 key购买 nike

我是 Python 的新手,但我爱上了这门语言!

我有一个巨大的 sqlite3 数据库,其中包含第 0 行 中文件的路径和 第 3 行 中的文件 MD5 >.

我需要根据它们的 MD5 搜索重复文件,并且我想将这些重复文件组织为 dictionaries,如下所示:

{"b23e5d453643f66b68634d0204884cdf":an array of all paths that have the same MD5, like the one that is the key of this dictionary}

我正在使用以下代码搜索数据库并制作元组:

    db = sqlite3.connect('imges.db')
with db:
cur = db.cursor()
cur.execute("SELECT * FROM IMAGES")
while True:
row = cur.fetchone()
if row == None:
break
self.duplesOfMD5 = [[row[3]],[row[0]]]
print self.duplesOfMD5

这给了我以下输出:

[[u'b23e5d453643f66b68634d0204884cdf'], [u'/Volumes/Backup/images_to_test/File_one_copy.png']]
[[u'b23e5d453643f66b68634d0204884cdf'], [u'/Volumes/Backup/images_to_test/File_one.png']]
[[u'f0b4108172c50f243d9e0132df4703a0'], [u'/Volumes/Backup/images_to_test/File_with_no_duplicate.png']]

我尝试过的每一种可能的解决方案都非常合适,但性能却很糟糕。执行此操作的最佳 pythonic 方法是什么?

谢谢!

最佳答案

如果我没理解错的话,你想要这样的东西:

{u'b23e5d453643f66b68634d0204884cdf':
[u'/Volumes/Backup/images_to_test/File_one_copy.png', u'/Volumes/Backup/images_to_test/File_one.png'],
u'f0b4108172c50f243d9e0132df4703a0':
[u'/Volumes/Backup/images_to_test/File_with_no_duplicate.png']
}

这非常适合 defaultdict (自 Python 2.5 起可用)

from collections import defaultdict

grouped_by_md5 = defaultdict(list)
db = sqlite3.connect('imges.db')
with db:
cur = db.cursor()
cur.execute("SELECT row1, row3 FROM IMAGES")

for row1, row3 in cur:
grouped_by_md5[row3].append(row1)

关于python - 如何使用 Python 使用 sqlite3 在元组中查找重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18764288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com