sorted()函数排序的灵活运用---面试

知识点:

题目一:列表嵌套字典的排序,分别根据年龄和姓名排序

foo = [{"name":"zs","age":19},{"name":"ll","age":54},
{"name":"wa","age":17},{"name":"df","age":23}]

 1 foo = [{"name": "zs", "age": 19}, {"name": "ll", "age": 54},
 2 
 3         {"name": "wa", "age": 17}, {"name": "df", "age": 23}]
 4 
 5 
 6 a = sorted(foo, key=lambda x: x['age'], reverse=True)
 7 print('按照年龄倒序排列:', a)
 8 
 9 a = sorted(foo, key=lambda x: x['name'])
10 print('按照姓名排序:', a)

运行结果如下:

题目二:列表嵌套元组,分别按字母和数字排序
foo = [("ab", 20), ("ur", 30), ("wa", 19), ('zf', 23)]
1 foo = [("ab", 20), ("ur", 30), ("wa", 19), ('zf', 23)]
2 a = sorted(foo, key=lambda x: x[0], reverse=True)  # reverse=True是降序,reverse=False是升序(默认)
3 print('按照字母排序的结果是:', a)
4 a = sorted(foo, key=lambda x: x[1])
5 print('按照数字排序的结果是:', a

运行结果如下:

题目三:列表嵌套列表排序,年龄数字相同怎么办?
foo = [("ab", 20), ("ur", 30), ("wa", 19), ('zf', 23), ('ha', 23), ('nb', 23)]

1 foo = [("ab", 20), ("ur", 30), ("wa", 19), ('zf', 23), ('ha', 23), ('nb', 23)]
2 a = sorted(foo, key=lambda x: (x[1], x[0]))  # 年龄相同怎么办?lambda表达式的key值添加参数,按字母排序
3 print('按年龄排序,年龄相同的按照姓名排序:', a)

运行结果是:

 题目四:根据字符串长度排序

s = ['ab', 'uuu', 'w', 'iudsc', 'sdgfkjsgfasu', 'qq', 'uytg']

1 s = ['ab', 'uuu', 'w', 'iudsc', 'sdgfkjsgfasu', 'qq', 'uytg']
2 # 使用sorted方法.sorted函数有返回值,不改变s本身的值
3 s_new = sorted(s, key=lambda x: len(x))
4 print(s_new, s)
5 
6 # 使用sort方法。sort函数没有返回值,是修改s本身。
7 s.sort(key=len)
8 print(s)

运行结果是:

 
原文地址:https://www.cnblogs.com/annatest/p/13625321.html