sorted 语法:
sorted(iterable, cmp=None, key=None, reverse=False)
参数说明:
iterable
– 可迭代对象。
cmp
– 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key
– 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse
– 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
字典:
1: 按照键值(value)排序
a = {‘a’: ‘China’, ‘c’: ‘USA’, ‘b’: ‘Russia’, ‘d’: ‘Canada’}
b = sorted(a.items(), key=lambda x: x[1], reverse=True)
结果:
[(‘c’, ‘USA’), (‘b’, ‘Russia’), (‘a’, ‘China’), (‘d’, ‘Canada’)]
2: 按照键名(key)排序
a = {‘a’: ‘China’, ‘c’: ‘USA’, ‘b’: ‘Russia’, ‘d’: ‘Canada’}
b = sorted(a.items(), key=lambda x: x[0], reverse=True)
结果:
[(‘d’, ‘Canada’), (‘c’, ‘USA’), (‘b’, ‘Russia’), (‘a’, ‘China’)]
3: 嵌套字典, 按照字典键名(key)排序
a = {‘a’: {‘b’: ‘China’}, ‘c’: {‘d’: ‘USA’}, ‘b’: {‘c’: ‘Russia’}, ‘d’: {‘a’: ‘Canada’}}
b = sorted(a.items(), key=lambda x: x[1], reverse=True)
结果:
[(‘c’, {‘d’: ‘USA’}), (‘b’, {‘c’: ‘Russia’}), (‘a’, {‘b’: ‘China’}), (‘d’, {‘a’: ‘Canada’})]
4: 嵌套列表, 针对列表第一个元素排序( 其实直接写 x: x[1] 就是按照第一个值排序. )
a = {‘a’: [1, 3], ‘c’: [3, 4], ‘b’: [0, 2], ‘d’: [2, 1]}
b = sorted(a.items(), key=lambda x: x[1][0], reverse=True)
结果:
[(‘c’, [3, 4]), (‘d’, [2, 1]), (‘a’, [1, 3]), (‘b’, [0, 2])]
4-2: 嵌套列表, 按照列表其他元素排序 只需要修改列表对应的下标
a = {‘a’: [1, 3], ‘c’: [3, 4], ‘b’: [0, 2], ‘d’: [2, 1]}
b = sorted(a.items(), key=lambda x: x[1][1], reverse=True)
结果:
[(‘c’, [3, 4]), (‘a’, [1, 3]), (‘b’, [0, 2]), (‘d’, [2, 1])]
列表
列表专用方法sort()可以直接修改列表本体
1: 按照字母排序
a = [‘USA’, ‘China’, ‘Canada’, ‘Russia’]
a.sort(reverse=True)
结果:
[‘USA’, ‘Russia’, ‘China’, ‘Canada’]
2: 嵌套列表的排序, 按照子列表的其他值排序 修改下标即可
a = [[‘USA’, ‘b’], [‘China’, ‘c’], [‘Canada’, ‘d’], [‘Russia’, ‘a’]]
a.sort(key=lambda x: x[0], reverse=True)
结果:
[[‘USA’, ‘b’], [‘Russia’, ‘a’], [‘China’, ‘c’], [‘Canada’, ‘d’]]
3: 嵌套字典, 按照字典值(value) 排序
a = [{‘letter’: ‘b’}, {‘letter’: ‘c’}, {‘letter’: ‘d’}, {‘letter’: ‘a’}]
a.sort(key=lambda x: x[‘letter’], reverse=True)
结果:
[{‘letter’: ‘d’}, {‘letter’: ‘c’}, {‘letter’: ‘b’}, {‘letter’: ‘a’}]
4: 当字典值也是字典时, 这时候会优先按照键名排序, 再按照键值排序。
a = [{‘letter’: {‘a’: ‘b’}}, {‘letter’: {‘a’: ‘c’}}, {‘letter’: {‘a’: ‘d’}}, {‘letter’: {‘a’: ‘a’}}]
a.sort(key=lambda x: x[‘letter’], reverse=True)
结果:
[{‘letter’: {‘a’: ‘d’}}, {‘letter’: {‘a’: ‘c’}}, {‘letter’: {‘a’: ‘b’}}, {‘letter’: {‘a’: ‘a’}}]
和
a = [{‘letter’: {‘a’: ‘b’}}, {‘letter’: {‘b’: ‘c’}}, {‘letter’: {‘c’: ‘d’}}, {‘letter’: {‘d’: ‘a’}}]
a.sort(key=lambda x: x[‘letter’], reverse=True)
结果:
[{‘letter’: {‘d’: ‘a’}}, {‘letter’: {‘c’: ‘d’}}, {‘letter’: {‘b’: ‘c’}}, {‘letter’: {‘a’: ‘b’}}]