python - 根据负载值对端口号进行排序

标签 python sorting dictionary

from collections import defaultdict

INPUT = "/Users/amanshah/Desktop/hsn/a.tcp"

payloads = defaultdict(int)

with open(INPUT) as inf:
    for line in inf:
        values  = line.split()
        port    = int(values[1])
        payload = int(values[5])
        payloads[port] += payload

for port in sorted(payloads):
            print("{}: {}".format(port, payloads[port]))
text.close()

在这里,我得到了所有端口的输出及其相应的有效负载(总和),现在我的问题是如何根据有效负载对端口号进行排序,因为最大有效负载的端口应该排在第一位???

最佳答案

根据值而不是键排序:

for k, v in sorted(payloads.iteritems(), key=lambda x:x[1], reverse=True):
    print("{}: {}".format(k, v))

由于您所做的只是在此处进行计数,因此您还可以使用 collections.Counter为此,然后使用其 most_common()方法:

from collections import Counter

payloads = Counter()

...

for k, v in payloads.most_common():
    print("{}: {}".format(k, v))

关于python - 根据负载值对端口号进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315657/

相关文章:

电子交易所top K股算法

python - 替换 Python 中的字典键(字符串)

python - Django QuerySet 与原始 SQL 性能注意事项

python - 使用 pyinstaller 后,我的程序在运行 subprocess.run() 命令时卡住

python - 正则表达式从字符串python中提取三个字符

python - 如何在 Django 管理列表显示页面中编辑 ManyToManyField?

java - 从排序的 Char 数组中删除重复项

ios - 使用 Swift 对日语字符进行排序

iphone - 如何获取两个 POI 之间的角度?

javascript - map 边界!如何检查地址是否位于边界内?