标签:lambda ack 性能 lis value rev bubble print 字典
今天给小伙们出了一个题,排序下面的字典,可以指定key或者value进行升序、降序排序: dt = {
‘Jack‘: 89,
‘Rose‘: 78,
‘Tom‘: 99
}
分析:
1.字典暂时不能直接排序
2.可以借鉴元组排序的方式
代码如下:
print(sorted(list(dt.items()), key= lambda x:x[1], reverse=False))
不过有些小伙伴,对这个代码不是很理解,于是简单的实现sorted排序,这里不考虑复杂度和性能,仅仅是为了演示下sorted:
dt = {
‘Jack‘: 89,
‘Rose‘: 78,
‘Tom‘: 99
}
def bubble_sort(dt:list, key, reverse=False):
for x in range(len(dt) - 1):
for y in range(len(dt)-1-x):
if not reverse:
if key(dt[y]) > key(dt[y+1]):
dt[y], dt[y+1] = dt[y+1],dt[y]
else:
if key(dt[y]) < key(dt[y+1]):
dt[y], dt[y+1] = dt[y+1],dt[y]
def key(x):
# 这里用 value 排序
return x[1]
dt2 = list(dt.items())
bubble_sort(dt2, key, reverse=False) #源地修改
print(sorted(list(dt.items()), key= lambda x:x[1], reverse=False))
print(dt2)
标签:lambda ack 性能 lis value rev bubble print 字典
原文地址:https://blog.51cto.com/14730644/2475252