<p>假设您希望在计算时将更多值与键相关联,我的方法是:</p>
<pre><code>d = {}
with open("input.txt") as infile:
lines = infile.readlines()
keys = sorted(set(line.split()[1] for line in lines))
for key in keys:
tempList = []
for line in lines:
if line.split()[1]==key:
tempList.append(line.split()[0])
d.update({key:tempList})
print(d)
</code></pre>
<p>输出:</p>
<pre><code>{'trendmar': ['-34G', '+41G'], 'uberhelp': ['-13M', '+19M'], 'umljgate': ['-8.9G', '+9.2G'], 'ttpsenet': ['1.4G'], 'tyibahco': ['3.6G']}
</code></pre>
<p><strong>编辑:</strong></p>
<p>如果您希望找到两个值之间的差异,可以使用<code>literal_eval</code>模块中的<code>ast</code>函数来完成,如下所示:</p>
<pre><code>from ast import literal_eval
d = {'trendmar': ['-34G', '+41G'], 'uberhelp': ['-13M', '+19M'], 'umljgate': ['-8.9G', '+9.2G'], 'ttpsenet': ['1.4G'], 'tyibahco': ['3.6G']}
first = 0
second = 1
diff = []
for key in d.keys():
if len(d[key])==2:
diff.append(key + " : " + str(literal_eval("".join([d[key][first][:-1] ," - (", d[key][second][:-1], ")"]))) + d[key][first][-1])
else:
diff.append(key + " : " + str(literal_eval(str(d[key][0][:-1]))) + d[key][0][-1])
print(diff)
</code></pre>
<p>输出:</p>
<pre><code>['uberhelp : -32M', 'tyibahco : 3.6G', 'ttpsenet : 1.4G', 'umljgate : -18.1G', 'trendmar : -75G']
</code></pre>
<p>在上面的例子中,我们从第二个值中减去第一个值。如果希望相反,则交换<code>first</code>和<code>second</code>的值。你知道吗</p>