首页 > 编程语言 >一文弄懂Python中的sort和sorted函数

一文弄懂Python中的sort和sorted函数

时间:2023-04-09 14:33:41浏览次数:40  
标签:sort Python price sorted print Sorted 排序 data

1. 引言

Python中的 sort()sorted()函数主要用于按升序或降序对数据进行排序。在本文中比较用于列表时,两个函数在编程和语法上的差异。

闲话少说,我们直接开始吧!

2. Sort()函数基本用法

用于列表排序的sort函数的语法如下:

list.sort(reverse=False, key=None)

用法如下:

  • 参数reverse:默认为False。如果reverse=True,则数据将按降序排列。
  • 参数key: 默认为None。我们可以指定一个用户定义的函数来自定义排序。

2.1 样例一之基本排序

我们首先尝试使用上述默认参数来看个事例,样例代码如下:

# Original List
typ_data = ['$', '45', '3j+5', 'Hello']
print(f'Original Data: {typ_data}')

# Sorting the list
typ_data.sort()
# Printing sorted list
print(f'Sorted Data: {typ_data}')

----------
Original Data: ['$', '45', '3j+5', 'Hello']
Sorted Data: ['$', '3j+5', '45', 'Hello']

可以知道上述结果按照字符串首字符的ASCII码进行升序排序。

2.2 样例二之用户自定义排序函数

有时间我们需要按照用户自定义的函数来对列表进行排序,相应的代码示例如下:

# List containing dictionary data
data = [
    {'fruit': 'strawberry', 'price': 100},
    {'fruit': 'banana', 'price': 91},
    {'fruit': 'mango', 'price': 132},
    {'fruit': 'cherry', 'price': 82},
]

print(f'Original Data: {data}')

# Function for sorting by key 'price'
def sort_dict_by_price(item):
    return item['price']

# Sorting data using the user-defined sorting function
data.sort(key=sort_dict_by_price)
print('-'*20)
# Printing the data
print(f'Sorted Data: {data}')

运行结果如下:

Original Data: [{'fruit': 'strawberry', 'price': 100}, {'fruit': 'banana', 'price': 91}, {'fruit': 'mango', 'price': 132}, {'fruit': 'cherry', 'price': 82}]
--------------------
Sorted Data: [{'fruit': 'cherry', 'price': 82}, {'fruit': 'banana', 'price': 91}, {'fruit': 'strawberry', 'price': 100}, {'fruit': 'mango', 'price': 132}]

上述代码中,我们通过编写一个名为sort_dict_by_price的函数,它接受我们的字典本身作为输入,并返回键“price”的值。将此函数已传递给函数sort的参数key,该参数将根据价格按升序对数据进行排序。

3. Sorted()函数基本用法

用于列表排序的sorted函数的语法如下:

sorted(iterable, key=None, reverse=False)

用法如下:

  • 参数iterable: 必需。输入任何可迭代数据
  • 参数key: 默认为“None”。指定排序条件。
  • 参数reverse: 默认为False。当设置为True时,数据将按降序排列。

3.1 样例一之基本排序

Python中的sorted()函数用于对可迭代数据进行排序。默认情况下,此函数按升序对数据进行排序。

我们当然也可以使用sorted函数来对各种类型的数据进行排序,样例代码如下:

list_data = [43, 21, 2, 34]
print(f'Sorted List: {sorted(list_data)}')

# Seperator
print('-'*20)

tuple_data = (('x', 3), ('w', 1), ('1', 4))
print(f'Sorted Tuple: {sorted(tuple_data)}')

# Seperator
print('-'*20)

dict_data = {9: 'G', 1: 'V', 4: 'E'}
print(f'Sorted Dictionary Keys: {sorted(dict_data)}')
print(f'Sorted Dictionary Values: {sorted(dict_data.values())}')
print(f'Sorted Dictionary Items: {sorted(dict_data.items())}')

结果如下:

Sorted List: [2, 21, 34, 43]
--------------------
Sorted Tuple: [('1', 4), ('w', 1), ('x', 3)]
--------------------
Sorted Dictionary Keys: [1, 4, 9]
Sorted Dictionary Values: ['E', 'G', 'V']
Sorted Dictionary Items: [(1, 'V'), (4, 'E'), (9, 'G')]

3.2 样例二之用户自定义排序函数

我们同样也可以通过将自定义排序函数传递给函数sorted()来实现相应的排序功能,举例如下:

# Tuple data
tuple_data = (
    ('Mango', 25),
    ('Walnut', 65),
    ('Cherry', 10),
    ('Apple', 68),
)

print(f'Original: {tuple_data}')
# Separator
print('-'*20)

# Function for grabbing 2nd item from the data
def sorting_tup_data(item):
    return item[1]

# Sorting based on sorting criteria in descending order
sorting = sorted(tuple_data, key=sorting_tup_data, reverse=True)
print(f'Sorted: {sorting}')

结果如下:

Original: (('Mango', 25), ('Walnut', 65), ('Cherry', 10), ('Apple', 68))
--------------------
Sorted: [('Apple', 68), ('Walnut', 65), ('Mango', 25), ('Cherry', 10)]

上述代码中,由于在传递自定义函数时使用了参数key,因此元组是根据第二项进行排序的;同样由于我们将参数reverse设置为True,此时输出的数据是按降序排序输出的。

4. 总结

我们已经看到了用于列表中的sort()sorted()函数的对比,同样我们给出了相应的代码示例,进而了解这些函数是如何工作的。简而言之,这两个函数都用于对数据进行排序,但函数sort()只对Python列表进行排序,而sorted()函数用于对可迭代数据进行排序。

对以上进行总结如下:

一文弄懂Python中的sort和sorted函数_排序

标签:sort,Python,price,sorted,print,Sorted,排序,data
From: https://blog.51cto.com/u_15506603/6178871

相关文章

  • 21天掌握Python 3/21 编码
    如果输出中文字符 "你好,世界" Python有可能会碰到中文编码问题。Python文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/pythonprint("你好,世界")以上程序执行输出结果为:File"test.py",line2SyntaxError:Non-ASCIIcharacter'\xe4'infiletest.pyonline2,bu......
  • python把结果保存到word
    开始Python操作Word用到了模块python-docx,它把word分割成很多段落,如下结构:document>paragraph/picture>run其中document是整个文档对象,paragraph是段落run是段落下的按照样式来分割的小块,每块有独立的样式。安装方式pipinstallpython-docx示例fromdocximportDo......
  • Centos 7 安装 Python3.9.16
    1、下载Python官网(https://www.python.org/downloads/)对应的安装包,选择3.9.16的linux版本wgethttps://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz2、解压tgz包tarzxvfPython-3.9.16.tgz-C/opt3、创建Python-3.6.5安装目录mkdir/usr/local/python34、安装依......
  • Python-venv-创建和管理虚拟环境
    Python-venv-创建和管理虚拟环境https://docs.python.org/3/tutorial/venv.html概述Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。这意味着一个Pytho......
  • Python中的抽象基类介绍
        从上一篇文章(Python中鸭子类型与多态介绍)中,我们了解到了python的鸭子类型和多态。继承提供了多态的基础,而多态则使继承更加灵活和强大。那么今天,让我们再来一起了解一下python里面的抽象基类。Python中的抽象基类(AbstractBaseClasses,简称abc)是一种特殊的类,它用于定义一......
  • Python 安装 pyenv
    安装安装到指定位置方便管理pipinstallpyenv-win-i"D:\ProgramFiles\pyenv"配置环境变量查找安装的版本这里我们安装3.11为示例安装后我们在下面的versions目录可以找到Python的程序文件......
  • 【Python】python中的argparse包在解析bool型参数时的细节问题
    1.参数定义定义了如下三个参数,其中use_entity_type和use_entity_id是bool参数。这两个bool型参数的默认值都是True。2.命令行传参这里是vscode中的launch.json文件中的参数定义,想把下面的两个参数修改成False。3.运行过程运行代码,但是发现经过parser.parse_args()之后,参数u......
  • python—numpy库学习
    importnumpyasnparr=np.array([1,2,3])print(arr.shape)print(arr)arr=np.arange(10)print(arr.shape)print(arr)#(开始,截止,步长)#[开始,截止)范围内步长为间隔的更新arr=np.arange(0,10,2.5)print(arr.shape)print(arr)#在一个区间内返回等间距数组arr=np.linspac......
  • Code-C++ Invoke Python
    Code-C++InvokePythonhttps://www.cnblogs.com/yongchao/p/17299892.html使用C或C++扩展Python扩展和嵌入Python解释器Python3.10.11Python/CAPI参考手册Python3.11.3Python/CAPI参考手册https://www.cnblogs.com/lidabo/p/17043302.htmlhttps://bl......
  • OS-Linux-Ubuntu22.04x64-Python-C++调用Python缺少Python.h
    OS-Linux-Ubuntu22.04x64-Python-C++调用Python缺少Python.h使用C或C++扩展Python扩展和嵌入Python解释器Python3.10.11Python/CAPI参考手册Python3.11.3Python/CAPI参考手册参考https://www.cnblogs.com/lidabo/p/17043302.htmlhttps://blog.csdn.net/z......