如果一个值出现多次,从列表中移除两个项(Python)
大家好
我有一个包含(文件,inode,图像,哈希)元组的列表。如果它们的哈希值相同,我需要删除这两个项目。我编程经验不多,所以如果能给我一些提示,让我知道该往哪个方向找就好了。我已经在网上搜索过,但找到的唯一信息就是这个。
到目前为止,我想出了这个(非常笨拙的)解决方案:
hashlist = {}
files_tobe_removed = []
for (file, inode, image, hash) in self.files_for_json:
hashlist[hash] = 0
for (file, inode, image, hash) in self.files_for_json:
hashlist[hash] +=1
for (k,v) in hashlist.iteritems():
if v == 2:
files_tobe_removed.append(k)
for (file,inode,image,hash) in self.files_for_json:
if hash in files_tobe_removed:
path = self.outDir + file
os.remove(path)
self.files_for_json.remove((file,inode,image,hash))
任何帮助都将不胜感激。提前谢谢你们!
1 个回答
3
>>> from collections import Counter
>>> L=[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1,2,3]
>>> [k for k,v in Counter(L).items() if v==1]
[7, 8, 9]
为了更清楚地说明:
hash_counter = Counter(x[3] for x in self.files_for_json)
for (file,inode,image,hash) in self.files_for_json:
if hash_counter[hash]>1:
# duplicated hash
...