擅长:python、mysql、java
<p>看起来这应该重写为:</p>
<pre><code>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]))
</code></pre>
<p><strong>编辑</strong>:根据您上面的评论,您似乎正在扫描tcp日志文件并将每个端口的总传输量相加。在</p>
<p>所以我创建了一个名为<code>payloads</code>的字典,其中<code>payloads[port]</code>保存了该端口所有有效负载的总和;此外,我将其设置为<code>defaultdict(int)</code>,这意味着如果我请求<code>payloads[port_I_havent_seen_yet]</code>,它会自动创建并返回一个新的条目==0,而不是抛出一个KeyError。在</p>
<p>然后,我扫描文件的每一行,并在执行时更新<code>payloads</code>。在</p>
<p>最后,<code>sorted(payloads)</code>得到<code>payloads</code>键的列表(我遇到的所有端口),并按升序对其进行排序;然后打印出每个端口及其总负载。根据您的示例数据,您应该看到</p>
^{pr2}$
<p>希望这有帮助!在</p>