Python标准计数唯一值和无numpy堆叠

2024-09-30 08:15:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个我的清单如下:

[['root', '151.62.163.222'], ['tergul', '151.62.163.222'], ['root', '201.179.14.4'], ['root', '201.179.14.4'], ['admin', '201.179.14.4'], ['admin', '201.179.14.4'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202']]

现在,我要计算唯一IP地址的数量,并将它们与计数一起堆叠在一起。结果应该是一个列表,如下所示:

^{pr2}$

我有一些代码可以对numpy数组执行此操作:

^{3}$

我不能使用numpy,因为它没有安装在运行它的服务器上。如何使用Python标准库和仅列表来实现这一点?在


Tags: 代码numpy服务器列表标准数量adminroot
3条回答

这应该可以做到:

from collections import Counter

lst = [['root', '151.62.163.222'], 
       ['tergul', '151.62.163.222'],
       ['root', '201.179.14.4'],
       ['root', '201.179.14.4'],
       ['admin', '201.179.14.4'],
       ['admin', '201.179.14.4'],
       ['lemming', '10.0.0.202'],
       ['lemming', '10.0.0.202'],
       ['lemming', '10.0.0.202'],
       ['lemming', '10.0.0.202'],
       ['lemming', '10.0.0.202'],
       ['lemming', '10.0.0.202']]
newLst = [t2 for t1, t2 in lst ]
print(Counter(newLst))
Counter({'10.0.0.202': 6, '201.179.14.4': 4, '151.62.163.222': 2})

您可以使用collections.Counter

from collections import Counter

data = [['root', '151.62.163.222'], ['tergul', '151.62.163.222'], ['root', '201.179.14.4'], ['root', '201.179.14.4'],
 ['admin', '201.179.14.4'], ['admin', '201.179.14.4'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202'],
 ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202'], ['lemming', '10.0.0.202']]

result = [list(item) for item in Counter(address for _, address in data).items()]

print(result)

输出

^{pr2}$

Counter很好,但是如果您对更深入的实现感兴趣,您可以使用字典并在遍历ip时跟踪计数。在

这是一个很好的练习,但是更干净的方法肯定会用到计数器。在

相关问题 更多 >

    热门问题