美文网首页Python问题大杂烩
Python sorted:对自定义的数据结构排序

Python sorted:对自定义的数据结构排序

作者: Minda1987 | 来源:发表于2018-05-02 14:31 被阅读1287次

Python 内置的sorted的函数可以用来对自定义的数据结构(列表)(设该列表为myList)排序,用法如下。

首先上定义。

Python 2下参数列表:sorted(iterable, cmp, key, reverse)

Python 3下参数列表:sorted(iterable, key, reverse)

Python 2 下分两步:

1. 对于自定义的数据结构可以重写一个cmp函数:

def compare(item1, item2):

   {某种比较方式,得出表示大或小的布尔值}

    return 表示大或小的布尔值

2.调用sorted:

myList = sorted(myList, cmp = compare) # reverse的设置视需要而定

Python 3 下分两步:

1. 对于自定义的数据结构可以重写一个getKeyValue函数:

def getKeyValue(item):

    keyValue ={对于MyList的元素item,获得用于比较的键值}

    return keyValue

2.调用sorted:

myList = sorted(myList, key = getKeyValue) # reverse的设置视需要而定

小结:

对于像我这种从C/C++过来的程序员,使用sorted时会自然地想到要去重写cmp函数,这在Python 2 环境下是没有问题的。但为了简化和统一,Python 3去掉了sorted()方法中的cmp参数,使得重写cmp函数的办法失效,如果一定要重写cmp,可以用functools.cmp_to_key()来曲线救国,具体可以参考链接:Python3: 找回sort()中消失的cmp参数 - Penguin

不过,由于Python 2 的语法中sorted的同样包含了key这个参数,所以Python 3下的方法应当是同样适用于Python 2的。

对于Python 3 中的key这个参数,网上有一些文章解释了这个参数是什么,以及如何用,在此不多赘述,但如果自己写的数据结构比较复杂,建议还是手动写getKeyValue以免出错。key = getKeyValue 把自己写的方法名 ‘getKeyValue’  传给key,这样就可以用自己的方法来获取用于比较的键值。

举个例子,假设要对某些商品按照其价格进行排序,商品存在myList中——myList是一个list,其中list的每个元素(item)是一个series。元素(item)示例如下:


weight  200.00g

shop   XX配件专营店

name  USB有线鼠标台式电脑笔记本通用 黑色

price   ¥,1.28


这里,价格是像 ‘¥,1.28’ 这样的字符串,那么我们可以写一个getPrice来获取每个item的价格:

def getPrice(item):

    return float(item['price'][2:])

然后调用sorted

myList = sorted(myList, key = getPrice)

即可获得正确排序结果。

相关文章

  • Python sorted:对自定义的数据结构排序

    Python 内置的sorted的函数可以用来对自定义的数据结构(列表)(设该列表为myList)排序,用法如下。...

  • 12、函数式编程(二)

    12.1 python中自定义排序函数 Python内置的sorted()函数可对list进行排序: >>>sor...

  • python面试算法

    python内置数据结构算法常考 常用的内置算法和数据结构 sorted排序函数 dict/list/set/tu...

  • 各种排序算法,python实现

    Python先记录一下python中数据结构字典的排序方法。字典以键或值排序: 注意:sorted()的第一个参数...

  • Python 日常使用记录

    sorted排序 python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例,python...

  • 数据结构和算法(六)

    1. Python 内置数据结构和算法 使用过哪些内置的常用的算法和数据结构 sorted:排序 dict、lis...

  • python dict字典排序

    Python的sorted函数可以对字典的key排序,可以对字典的value排序。 1.sorted函数对字典的k...

  • 12.4、python内置函数—sorted

    内置函数——sorted 对List、Dict进行排序,Python提供了两个方法 对给定的List L进行排序,...

  • Python高阶函数sorted排序

    sorted用法 sorted是Python提供的功能强大的排序函数。满足字符,数字等排序要求。 对数字进行排序:...

  • python中__cmp__

    对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是...

网友评论

    本文标题:Python sorted:对自定义的数据结构排序

    本文链接:https://www.haomeiwen.com/subject/qzzqrftx.html