Удалить ОБА элементы из списка, если одно значение появляется несколько раз (Python) - PullRequest
2 голосов
/ 07 ноября 2011

Python: Как удалить все повторяющиеся элементы из списка

Привет, ребята

У меня есть список (file, inode, image, hash) -tuples. Мне нужно удалить ОБА элементы, если они имеют одинаковый хэш. У меня нет такого большого опыта в программировании, так что, возможно, намек на то, на что я должен смотреть, был бы уже полезен. Я уже искал в Интернете, но единственное, что я нашел, было это . До сих пор я придумал это (крайне неловкое) решение:

        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 Ответ

1 голос
/ 07 ноября 2011
>>> 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
        ...
...