<p>基于@jpp的思想,但使用<a href="https://docs.python.org/3/library/heapq.html" rel="nofollow noreferrer">heap</a>:</p>
<pre><code>import heapq
d = {'Games': 715067930.8599964,
'Design': 705237125.089998,
'Technology': 648570433.7599969,
'Film & Video': 379559714.56000066,
'Music': 191227757.8699999,
'Publishing': 130763828.65999977,
'Fashion': 125678824.47999984,
'Food': 122781563.58000016,
'Art': 89078801.8599998,
'Comics': 70600202.99999984,
'Theater': 42662109.69999992,
'Photography': 37709926.38000007,
'Crafts': 13953818.35000002,
'Dance': 12908120.519999994,
'Journalism': 12197353.370000007}
top_5 = set(heapq.nlargest(5, d, key=d.get))
groups = {}
for category, pledge in d.items():
new_category = category if category in top_5 else 'Other'
groups.setdefault(new_category, []).append(pledge)
result = {k: sum(v) for k, v in groups.items()}
print(result)
</code></pre>
<p><strong>输出</strong></p>
<pre><code>{'Technology': 648570433.7599969, 'Design': 705237125.089998, 'Other': 658334549.8999994, 'Games': 715067930.8599964, 'Film & Video': 379559714.56000066, 'Music': 191227757.8699999}
</code></pre>
<p>或者如果你喜欢numpy:</p>
<pre><code>import numpy as np
d = {'Games': 715067930.8599964,
'Design': 705237125.089998,
'Technology': 648570433.7599969,
'Film & Video': 379559714.56000066,
'Music': 191227757.8699999,
'Publishing': 130763828.65999977,
'Fashion': 125678824.47999984,
'Food': 122781563.58000016,
'Art': 89078801.8599998,
'Comics': 70600202.99999984,
'Theater': 42662109.69999992,
'Photography': 37709926.38000007,
'Crafts': 13953818.35000002,
'Dance': 12908120.519999994,
'Journalism': 12197353.370000007}
categories, pledge_values = map(np.array, zip(*d.items()))
partition = np.argpartition(pledge_values, -5)
top_5 = set(categories[partition][-5:])
groups = {}
for category, pledge in d.items():
new_category = category if category in top_5 else 'Other'
groups.setdefault(new_category, []).append(pledge)
result = {k: sum(v) for k, v in groups.items()}
print(result)
</code></pre>
<p><strong>输出</strong></p>
<pre><code>{'Technology': 648570433.7599969, 'Design': 705237125.089998, 'Other': 658334549.8999995, 'Music': 191227757.8699999, 'Games': 715067930.8599964, 'Film & Video': 379559714.56000066}
</code></pre>
<p>第二个建议(使用numpy)的复杂性是<em>O(n)</em>,其中<code>n</code>是<code>d</code>的键、值对的数目</p>