<p>首先,我们创建以下词典:</p>
<pre><code>{'Russia': [0, -1, -1, 'Russia'], 'China': [-1, -2, 0, 'China'], 'Australia': [-1, 0, 0, 'Australia'], 'Cuba': [-1, 0, 0, 'Cuba']}
</code></pre>
<p>将值插入数组:</p>
<pre><code>[[0, -1, -1, 'Russia'], [-1, -2, 0, 'China'], [-1, 0, 0, 'Australia'], [-1, 0, 0, 'Cuba']]
</code></pre>
<p>对数组进行排序</p>
<pre><code>[[-1, -2, 0, 'China'], [-1, 0, 0, 'Australia'], [-1, 0, 0, 'Cuba'], [0, -1, -1, 'Russia']]
</code></pre>
<p>然后我们将奖牌计数从负反转为正,并将子数组转换为元组</p>
<pre><code>[(1, 2, 0, 'China'), (1, 0, 0, 'Australia'), (1, 0, 0, 'Cuba'), (0, 1, 1, 'Russia')]
</code></pre>
<p>我们将初始奖牌数量存储为负数,因为我们希望按降序排列奖牌数量,但字符串按升序排列。这将允许我们简单地调用.sort()方法,根据需要对数组进行排序。然后,我们可以将奖牌数量转换回最终输出的正值</p>
<pre><code>olimpic=[['Russia', 'bronze', 'basketball_male'],
['China', 'gold', 'soccer_female'],
['China', 'silver', 'judo_male_100kg'],
['Australia', 'gold', 'surf_male'],
['Cuba', 'gold', 'gymnastics_solo_female'],
['Russia', 'silver', 'karate_female_60kg'],
['China', 'silver', 'voleyball_female']]
short=[]
for i in range(len(olimpic)):
short.append([olimpic[i][0],olimpic[i][1]])
country_to_medal_counts_map = {}
medal_to_indice_map = {'gold': 0, 'silver': 1, 'bronze': 2}
for country, medal in short:
if country not in country_to_medal_counts_map:
country_to_medal_counts_map[country] = [0,0,0,country]
country_to_medal_counts_map[country][medal_to_indice_map[medal]] -= 1
country_rankings = [medal_counts for medal_counts in country_to_medal_counts_map.values()]
country_rankings.sort()
country_rankings = [tuple([gold*-1, silver*-1, bronze*-1, country])
for gold, silver, bronze, country in country_rankings]
print (country_rankings)
# [(1, 2, 0, 'China'), (1, 0, 0, 'Australia'), (1, 0, 0, 'Cuba'), (0, 1, 1, 'Russia')]
</code></pre>