<p>您不能更改<a href="https://docs.python.org/3/library/stdtypes.html#tuples" rel="nofollow noreferrer">tuple()s</a>-它们是不可变的。你可以创造一个新的。或者,您可以使用<code>itertools.groupby</code>将元组组合在一起并执行一些选择性输出:</p>
<pre><code>myresults=[('Raven', '18'), ('Cobra', '8'), ('Lion', '6'), ('Swine', '6'), ('Otter', '2')]
from itertools import groupby
grped = groupby(myresults, lambda x: int(x[1]))
# create a dict for all results
result_dict = {}
for key in grped :
result_dict[key[0]] = [value for value,_ in key[1]]
# print top 3 results:
for k in sorted(result_dict,reverse=True):
print(k)
print(result_dict[k])
# whole dict
print(result_dict)
</code></pre>
<p>输出:</p>
^{pr2}$
<hr/>
<p>第二种解决方法是使用<code>collections.defaultdict</code>:</p>
<pre><code>myresults=[('Raven', '18'), ('Cobra', '8'), ('Lion', '6'), ('Swine', '6'), ('Otter', '2')]
from collections import defaultdict
result_dict = defaultdict(list)
for value,key in myresults:
result_dict[int(key)].append(value)
for k in sorted(result_dict,reverse=True):
print(k)
print(result_dict[k])
print(result_dict)
18
['Raven']
8
['Cobra']
6
['Lion', 'Swine']
2
['Otter']
# whole dict
defaultdict(<class 'list'>, {18: ['Raven'], 8: ['Cobra'],
6: ['Lion', 'Swine'], 2: ['Otter']})
</code></pre>
<p>多库语:</p>
<ul>
<li><a href="https://docs.python.org/3/library/itertools.html#itertools.groupby" rel="nofollow noreferrer">itertools.groupby()</a></li>
<li><a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">collections.defaultdict()</a></li>
<li><a href="https://docs.python.org/3/library/functions.html#sorted" rel="nofollow noreferrer">sorted(iterable[,key=...])</a></li>
</ul>