Discuss / Python / 问个进阶问题

问个进阶问题

Topic source

cacaty

#1 Created at ... [Delete] [Delete and Lock User]

问个新问题, 分数高的排前面, 如果分数相同时,还需按照姓名排序,如何做?

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('a', 66), ('C', 66), ('Lisa', 88)]

operator库了解一下

布卢M

#3 Created at ... [Delete] [Delete and Lock User]

L2=sorted(L, key=lambda x: (x[1],str.lower(x[0])))

fly_莫

#4 Created at ... [Delete] [Delete and Lock User]

sorted()函数不是可以传入两个函数作为参数嘛,一个是按分数排的,一个是按名字排的,不就可以吗?

金钟铉

#5 Created at ... [Delete] [Delete and Lock User]
def a(n): 
    return -n[1],str.lower(n[0])
def by_score_name(t):    return -t[1], t[0].lower()

ywjco_567

#7 Created at ... [Delete] [Delete and Lock User]

分数高的排前面, 如果分数相同时,还需按照姓名排序

from operator import itemgetter
L = [('Bob', 75), ('Adam', 92), ('Bart', 92), ('Lisa', 88)]
sorted(L, key=itemgetter(1,0))

  • 1

Reply