我试图实现一个涉及耦合元素计数和排序的过程。然而,我被卡住了
以下是一个例子:
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]])
countrySort=sorted(short, key=lambda element: (element, element[1]))
print (countrySort)
我当前的输出是:
[['Australia', 'gold'],
['China', 'gold'],
['China', 'silver'],
['China', 'silver'],
['Cuba', 'gold'],
['Russia', 'bronze'],
['Russia', 'silver']]
但是,我必须执行其他三个步骤:
对国家和奖牌类型进行配对计数
根据奖牌类型的数量进行分类,记住:;黄金>;银牌>;无论奖牌数量多少,铜牌都在较低级别
当两个或两个以上的国家拥有完全相同数量的奖牌时,按其名称进行排序
输出应如下所示(元组列表):
Rank of the countries:
(1, 2, 0, 'China')
(1, 0, 0, 'Australia')
(1, 0, 0, 'Cuba')
(0, 1, 1, 'Russia')
首先,我们创建以下词典:
将值插入数组:
对数组进行排序
然后我们将奖牌计数从负反转为正,并将子数组转换为元组
我们将初始奖牌数量存储为负数,因为我们希望按降序排列奖牌数量,但字符串按升序排列。这将允许我们简单地调用.sort()方法,根据需要对数组进行排序。然后,我们可以将奖牌数量转换回最终输出的正值
相关问题 更多 >
编程相关推荐