python中sort用法?
Python中sort用法
在Python中,sort是一种非常常用的排序方法,除了能够对数值和字符串类型的数据进行排序,还可以用于字典中。下面从多个角度来介绍sort的用法。
1. 数值类型的排序
sort可以对数值类型的数据进行排序,如下所示:
```
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort()
print(lst)
```
输出结果为:
```
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
sort还支持倒序排序:
```
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort(reverse=True)
print(lst)
```
输出结果为:
```
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
```
2. 字符串类型的排序
sort还可以对字符串进行排序,如下所示:
```
words = ['apple', 'banana', 'pear', 'orange', 'grape', 'peach']
words.sort()
print(words)
```
输出结果为:
```
['apple', 'banana', 'grape', 'orange', 'peach', 'pear']
```
sort默认按照字符串的字典序进行排序,也支持倒序排序:
```
words = ['apple', 'banana', 'pear', 'orange', 'grape', 'peach']
words.sort(reverse=True)
print(words)
```
输出结果为:
```
['pear', 'peach', 'orange', 'grape', 'banana', 'apple']
```
3. 对字典排序
有时候我们需要对字典进行排序,按照值或者键进行排序,这时候就可以使用sort方法。如下所示:
```
ages = {'Alice': 25, 'Bob': 18, 'Charlie': 5, 'David': 20}
sorted_ages_by_value = sorted(ages.items(), key=lambda x: x[1])
sorted_ages_by_key = sorted(ages.items(), key=lambda x: x[0])
print(sorted_ages_by_value)
print(sorted_ages_by_key)
```
输出结果为:
```
[('Charlie', 5), ('Bob', 18), ('David', 20), ('Alice', 25)]
[('Alice', 25), ('Bob', 18), ('Charlie', 5), ('David', 20)]
```
排序字典时,需要使用sorted方法,将字典转化为元素为(key, value)的元组的列表,然后使用key参数来指定按照值或键进行排序。
4. 使用sort实现复杂排序
有时候需要对一个列表中的元素进行复杂的排序,sort也可以胜任。比如根据列表中元素包含的数字进行排序,如下所示:
```
def sort_by_digits(lst):
digits = list(map(str, range(10)))
return sorted(lst, key=lambda x: [int(d) for d in str(x) if d in digits])
lst = ['abc12', 'xyz3', 'ijk9', 'def7']
print(sort_by_digits(lst))
```
输出结果为:
```
['xyz3', 'abc12', 'def7', 'ijk9']
```
5. sort和sorted的区别
sort和sorted都是用于排序的方法,sort是在原列表上进行排序,sorted是创建一个新的排序后的列表,不改变原列表。
```
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst)
print(lst) # [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
print(sorted_lst) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
lst.sort()
print(lst) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
通过对sort的用法进行分析,我们可以看出sort的灵活性和适用性。