Вы можете сделать этот трюк, используя set
;)
Здесь у вас есть минимальный пример списка файлов и показывает, когда он появляется 2 раза:
files = ['10.gif', '8.gif', '0.gif', '0.doc', '0.gif', '0.gif', '0.tmp', '0.doc', '0.gif']
file_set = set(files)
files_freq = [0]*len(file_set)
for n,file in enumerate(file_set):
files_freq[n] = files.count(file)
sorted_list = [f for n,f in sorted(zip(files_freq, file_set), key=lambda x: x[0], reverse=True) if n >= 2]
print(sorted_list)
и вывод будет: ['0.gif', '0.doc']
set
будет фильтровать список только по уникальным вхождениям каждого файла, а l oop вычислит количество каждого файла.
После , понимание жуткого списка - это трюк !
[f for n,f in sorted(zip(files_freq, file_set), key=lambda x: x[0], reverse=True) if n >= 2]
Это создаст список только с файлами, которые появлялись 2 или более раз, тогда часть key
заставляет sorted
функция для использования первых files_freq
из zip(files_freq, file_set)
для сортировки и reverse
для сортировки списка в порядке убывания, показывая самые высокие частоты до этого.