Discuss / Python / sorted

sorted

Topic source

def by_score(t): return t[1]

L2 = sorted(L,key=by_score,reverse=True)

如果L = {'bab': 75, 'Adam': 92, 'Bort': 66, 'lisa': 88} 怎样按姓名排序(忽略大小写)?求大神解答

-SuperDon-

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

@用户3627907223

dict 本身是无序数据结构,只有转成 list 后再排序才有意义。

代码:

L = {'bob': 75, 'Adam': 92, 'Bort': 66, 'lisa': 88}

普通方法实现:

def byName(_n):
    return _n[0].lower()

def byScore(_s):
    return _s[1]

print('By Name :', sorted(L.items(), key = byName))
print('By Score:', sorted(L.items(), key = byScore))

一行代码简写:

print('Simply  :', sorted(L.items(), key = lambda n : n[0].lower()))

打印结果:

By Name : [('Adam', 92), ('bob', 75), ('Bort', 66), ('lisa', 88)]
By Score: [('Bort', 66), ('bob', 75), ('lisa', 88), ('Adam', 92)]
Simply  : [('Adam', 92), ('bob', 75), ('Bort', 66), ('lisa', 88)]

  • 1

Reply