Py学习  »  Python

列表中实例数相同的python max

REMANENCE2019 • 6 年前 • 2022 次点击  

对于分配给我的任务,我将构建一个解析器,它将从JSON文件中提取相关信息,并将其呈现在用户友好的报告中。其中一个功能是根据大多数输出识别恶意软件。对n个json文件有效。

我已经成功地解析了一个目录中的所有json文件,并且能够从它提供给它检测到的恶意软件的字段中提取所有相关信息,并将这些信息附加到每个json文件的列表中。从这里可以看出: Lists created

我需要遍历每个列表,在每个列表中找到最频繁的元素,并将最频繁的元素追加到新列表中。

以我为例 最常见() 最大() 函数无法工作,因为json文件1的列表中可能有5个元素等于最常见的元素,json文件2的列表中可能有3个元素,依此类推。这对任何数量的json文件都有效。任何帮助都将不胜感激。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43629
文章 [ 3 ]  |  最新文章 6 年前
Arkistarvh Kltzuonstev
Reply   •   1 楼
Arkistarvh Kltzuonstev    6 年前

试试这个:

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']
Cyrbuzz
Reply   •   2 楼
Cyrbuzz    6 年前

从@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']
Rakesh
Reply   •   3 楼
Rakesh    6 年前

使用 collections.Counter

前任:

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)]