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/