iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python dict的list排序
  • 224
分享到

python dict的list排序

pythondictlist 2023-01-31 01:01:17 224人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

对于简单的list排序,直接调用内建函数就可以了,但是对于dict的list排序就没有那么直接了,不过,还是有很简洁的办法的,如: >>> ls1 = [{'a' : 1, 'b' : 12}, {'a' : -1, '

对于简单的list排序,直接调用内建函数就可以了,但是对于dict的list排序就没有那么直接了,不过,还是有很简洁的办法的,如:

>>> ls1 = [{'a' : 1, 'b' : 12}, {'a' : -1, 'b' : 22},{'a' : 12, 'b' : 32},{'a' : 6, 'b' : 42}]

>>> ls1.sort(key=lambda obj:obj.get('a'))

>>> ls1[{'a': -1, 'b': 22}, {'a': 1, 'b': 12}, {'a': 6, 'b': 42}, {'a': 12, 'b': 32}]

>>>

python中dict和list排序
1、list排序
   列表的排序是Python内置功能,自身含有sort方法
   如:
   >>> s=[2,1,3,0]
   >>> s.sort()
   [0, 1, 2, 3]
2、dict排序
   对字典的排序,因为每一个项包括一个键值对,所以要选择可比较的键或值进行排序
    sorted(iterable[, cmp[, key[, reverse]]]
    cmp和key一般使用lambda
如:
>>> d={"ok":1,"no":2}
对字典按键排序,用元组列表的形式返回
>>> sorted(d.items, key=lambda d:d[0])
[('no', 2), ('ok', 1)]
对字典按值排序,用元组列表的形式返回
>>> sorted(d.items, key=lambda d:d[1])
[('ok', 1), ('no', 2)]
3、元组列表排序
   如
>>> li=[(2,'a'),(4,'b'),(1,'d')]
>>> li.sort()
[(1, 'd'), (2, 'a'), (4, 'b')]
如果字典按项的第一个元素排序的话,可以转换成元组列表来进行
>>> d={"ok":1,"no":2}
>>> tt=[tuple(item) for item in d.items()]
>>> tt.sort()
[('no', 2), ('ok', 1)]
4 其他人的实现,留住备忘
下面是一个结构的例子 >>> class test:
        def __init__(self,a,b):
              self.a = a
              self.b = b>>> test1 = test(5,25)
>>> test2 = test(10,15)
>>> tests = [test1,test2]>>> sorted(tests,cmp = lambda x,y: cmp(x.a, y.a)) 

>>> result = sorted(tests,key = lambda d:d.a)
5、

# (IMHO) the simplest approach:
def sortedDictValues1(adict):
items = adict.items()
items.sort()
return [value for key, value in items]
# an alternative implementation, which
# happens to run a bit faster for large
# dictionaries on my Machine:
def sortedDictValues2(adict):
keys = adict.keys()   keys.sort() return [dict[key] for key in keys]
# a further slight speed-up on my box
# is to map a bound-method:
def sortedDictValues3(adict):
keys = adict.keys()
keys.sort()

return map(adict.get, keys)

以下是sort的具体实例。实例1:
>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]
实例2:
>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]
实例3:
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(cmp=lambda x,y:cmp(x[1],y[1]))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
实例4:
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
实例5:
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
实例6:(DSU方法:Decorate-Sort-Undercorate)
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项
为比较关键字进行排序.
效率比较:
cmp < DSU < key
通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当
多关键字比较排序:
实例7:
>>>L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字
排过序后再用第一个关键字进行排序呢?有两种方法
实例8:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
实例9:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
为什么实例8能够工作呢?原因在于tuple是的比较从左到右之一比较的,比较完第一个,如果
相等,比较第二个

--结束END--

本文标题: python dict的list排序

本文链接: https://www.lsjlt.com/news/183837.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python dict的list排序
    对于简单的list排序,直接调用内建函数就可以了,但是对于dict的list排序就没有那么直接了,不过,还是有很简洁的办法的,如: >>> ls1 = [{'a' : 1, 'b' : 12}, {'a' : -1, '...
    99+
    2023-01-31
    python dict list
  • Python对Dict排序
    对下面的Dict: aps = {} for key in T.keys(): ap = average_precision(T[key], P[key]) aps[key] = ap ...
    99+
    2023-01-31
    Python Dict
  • python的dict,set,list
    字典(dict)dict 用 {} 包围 dict.keys(),dict.values(),dict.items() hash(obj)返回obj的哈希值,如果返回表示可以作为dict的key del 或 dict.pop可以删除一个it...
    99+
    2023-01-31
    dict python list
  • python list排序
    python 列表list中内置了一个十分有用的排序函数sort,sorted,它可以用于列表的排序,以下是例子。a = [5,2,1,9,6]         >>> sorted(a)                 ...
    99+
    2023-01-31
    python list
  • python dict 与list比较
    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度通过help(dict)可以查找dict有关的函数操作例如: dt  = dict(...
    99+
    2023-01-31
    python dict list
  • python dict sorted 排
    python dict sorted 排序 转载自http://hi.baidu.com/jackleehit/blog/item/53da32a72207bafa9052eea1.html 我们知道Python的内置dictionary...
    99+
    2023-01-31
    python dict sorted
  • python 字典(dict)按键和值排序
    python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行: 1 下面的是按照value的值从大到小的顺序来排序。 ...
    99+
    2022-06-04
    字典 按键 python
  • python数据类型dict、list、
    在测试时候我们经常会碰到要把读取的数据转成自己想要类型,比如字典转字符串、字符串转列表等等。 下面通过例子介绍一下:一、字典转字符串:(不改变原始字典a的值) 转元组:(不改变原始字典a的值)这里只把字典的key转过来,如果要把值转过来,这...
    99+
    2023-01-31
    数据类型 python list
  • python list的两种排序方法
    python提供了对list排序两种方法 1.使用list内建函数sort排序 list.sort(key=None,reverse=False) eg: In [57]: l=[27,47,3,42,19,9] In [58...
    99+
    2023-01-31
    两种 方法 python
  • python dict按照value 排
    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可以实现对dict...
    99+
    2023-01-31
    python dict
  • Python中对list进行排序
    很多时候,我们需要对List进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序方法2.用built-in函数sorted进行排序(从2.4开始)这两种方法使用起来差不多,以第一种为...
    99+
    2023-01-31
    中对 Python list
  • Python怎么实现List合成Dict
    本篇内容介绍了“Python怎么实现List合成Dict”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、...
    99+
    2022-10-19
  • Java 8 List 排序
    目录 一、List 排序的基本方法 二、List 按单个字段排序 三、List 按多个字段排序 四、List 按字段倒序排序 五、List 按字段排序并去重 六、List 按字段排序并分组 七、List 按字段排序并统计数量 八、总结 在 ...
    99+
    2023-09-02
    java list java8
  • python中的list字符串元素排序
    目录list字符串元素排序注意事项对含有数字的字符串进行排序list字符串元素排序 需求:对list中的字符串按照首字母排序 实现: list1 = ['as,jj,bk'] for...
    99+
    2022-11-11
  • python list的排列组合
    排列 例如: 输入为 [‘1’,’2’,’3’]和3 输出为 [‘111’,’112’,’113’,’121’,’122’,’123’,’131’,’132’,’133’,’211’,’212’,’213’,’221’,’...
    99+
    2023-01-31
    排列组合 python list
  • java List 排序之冒泡排序实例代码
    java List 排序之冒泡排序实例代码List排序,这里介绍两种排序:Collections.sort()排序:假如List集合中放的是Menu对象。public class Menu{ private int id; private ...
    99+
    2023-05-31
    java list 冒泡排序
  • C#泛型List排序的实现
    本文主要介绍了C# 泛型List排序的实现,分享给大家,具体如下: 代码 using System; using System.Collections.Generic; using...
    99+
    2022-11-13
  • python list排序的两种方法及实例讲解
    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Pytho...
    99+
    2022-06-04
    两种 实例 方法
  • Python 实现list,tuple,str和dict之间的相互转换
    1、字典(dict) dict = {‘name': ‘Zara', ‘age': 7, ‘class': ‘First'} 1.1 字典——字符串 返回: print t...
    99+
    2022-11-11
  • redis中怎么对list排序
    redis中对list排序的示例:在redis中使用sort对list进行排序。sort使用方法:sort key //返回键值从小到大排序的结果sort key desc //返回键值从大到小排序的结果例子:假设today_cost列表保...
    99+
    2022-10-23
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作