Python max с тем же количеством экземпляров в списке - PullRequest
0 голосов
/ 07 января 2019

Для задания, которое мне дали, я должен был создать парсер, который извлек бы соответствующую информацию из файлов json и представил ее в удобном для пользователя отчете. Одной из функций является идентификация вредоносного ПО на основе результатов большинства. Который должен работать на количество файлов json.

Я успешно проанализировал все файлы json из каталога и смог извлечь всю необходимую информацию из полей, в которых он обнаружил обнаруженное вредоносное ПО, и добавил эту информацию в список для каждого файла json. которые можно увидеть здесь: Списки созданы

Мне нужно пройтись по каждому списку, найти наиболее частые элементы в каждом списке и добавить наиболее часто встречающиеся элементы в новый список.

Для моего случая наиболее распространенные () и max () функции не будут работать, поскольку в списке для файла json может быть 5 элементов, равное наиболее распространенному, и 3 для JSON файл 2 и так далее. Это должно работать для любого количества файлов JSON. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Попробуйте это:

from collections import Counter
a = [('dog'),('dog'),('cat'),('cat'),('fish'),('frog'),('frog')]
ca = Counter(a).most_common()
print([i[0] for i in ca if i[1] == max([i[1] for i in ca])])
# Should print : ['dog', 'cat', 'frog']
0 голосов
/ 07 января 2019

Расширенный от @Rakesh:

from collections import Counter, defaultdict

example = [('dog'),('dog'),('cat'),('cat'),('fish'),('frog'),('frog')]
c = Counter(example)

_c = defaultdict(list)
for field in c.most_common():
    _c[field[1]].append(field[0])

print(_c)
print(max(_c))
print(_c[max(_c)])
-----
defaultdict(<class 'list'>, {2: ['dog', 'cat', 'frog'], 1: ['fish']})
2
['dog', 'cat', 'frog']
0 голосов
/ 07 января 2019

Использование collections.Counter

Ex:

from collections import Counter

example = [('dog'),('dog'),('cat'),('cat'),('fish'),('frog'),('frog')]
c = Counter(example)
print(c.most_common(3))

Выход:

[('dog', 2), ('frog', 2), ('cat', 2)]
...