s = "德国 10 11 16\n意大利 10 10 20\n荷兰 10 12 14\n法国 10 12 11\n英国 22 21 22\n中国 38 32 18\n日本 27 14 17\n美国 39 41 33\n俄罗斯奥委会 20 28 23\n澳大利亚 17 7 22\n匈牙利 6 7 7\n加拿大 7 6 11\n古巴 7 3 5\n巴西 7 6 8\n新西兰 7 6 7"
数据里面包含了15个国家的金、银、铜数据,对奖牌榜进行排序(先生成一个列表,再对列表元素进行排序)。
应该是先按金牌数排序,金牌数相同再按银牌数排序,银牌数相同再按铜牌数排序
你题目的解答代码如下:
s = "德国 10 11 16\n意大利 10 10 20\n荷兰 10 12 14\n法国 10 12 11\n英国 22 21 22\n中国 38 32 18\n日本 27 14 17\n美国 39 41 33\n俄罗斯奥委会 20 28 23\n澳大利亚 17 7 22\n匈牙利 6 7 7\n加拿大 7 6 11\n古巴 7 3 5\n巴西 7 6 8\n新西兰 7 6 7"
li=s.split('\n')
li.sort(key=lambda x:[int(v) for v in x.split(' ')[1:]] ,reverse=True)
for v in li:
print(v)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
按奖牌总数排序,参考代码
s = "德国 10 11 16\n意大利 10 10 20\n荷兰 10 12 14\n法国 10 12 11\n英国 22 21 22\n中国 38 32 18\n日本 27 14 17\n美国 39 41 33\n俄罗斯奥委会 20 28 23\n澳大利亚 17 7 22\n匈牙利 6 7 7\n加拿大 7 6 11\n古巴 7 3 5\n巴西 7 6 8\n新西兰 7 6 7"
a=s.split('\n')
res=sorted(a,key=lambda x:sum(map(int,x.split(' ')[1:])),reverse=True)
print(res)
如有帮助,请点采纳
代码如下
s = "德国 10 11 16\n意大利 10 10 20\n荷兰 10 12 14\n法国 10 12 11\n英国 22 21 22\n中国 38 32 18\n日本 27 14 17\n美国 39 41 33\n俄罗斯奥委会 20 28 23\n澳大利亚 17 7 22\n匈牙利 6 7 7\n加拿大 7 6 11\n古巴 7 3 5\n巴西 7 6 8\n新西兰 7 6 7"
list = s.split("\n")
scopes = []
for item in list:
scopes.append(item.split(" "))
scopes.sort(key=lambda scopes: int(scopes[3]), reverse=True)
scopes.sort(key=lambda scopes:int(scopes[2]),reverse=True)
scopes.sort(key=lambda scopes:int(scopes[1]),reverse=True)
print(scopes)
如果对你有帮助,望采纳
以金牌银牌铜牌这样排序楼上那位已经给出答案了,可以优化下就是直接一行代码表示按照多列排序
scopes_list = sorted(scopes, key=(lambda x: [int(x[1]), int(x[2]), int(x[3])]),reverse=True)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!