精华内容
下载资源
问答
  • Python字典按值排序、包含字典的列表按字典值排序的方法
    # -*- encoding=utf-8 -*-
    
    import operator
    # 按字典值排序(默认为升序)
    x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
    sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))
    print(sorted_x)
    # [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
    # 如果要降序排序,可以指定reverse=True
    sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True)
    print(sorted_x)
    # [(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]
    # 或者直接使用list的reverse方法将sorted_x顺序反转
    # sorted_x.reverse()
    
    # 取代方法是,用lambda表达式
    sorted_x = sorted(x.iteritems(), key=lambda x: x[1])
    print(sorted_x)
    # [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
    sorted_x = sorted(x.iteritems(), key=lambda x: x[1], reverse=True)
    print(sorted_x)
    # [(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]
    
    # 包含字典dict的列表list的排序方法与dict的排序类似,如下:
    x = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
    sorted_x = sorted(x, key=operator.itemgetter('name'))
    print(sorted_x)
    # [{'age': 10, 'name': 'Bart'}, {'age': 39, 'name': 'Homer'}]
    sorted_x = sorted(x, key=operator.itemgetter('name'), reverse=True)
    print(sorted_x)
    # [{'age': 39, 'name': 'Homer'}, {'age': 10, 'name': 'Bart'}]
    sorted_x = sorted(x, key=lambda x: x['name'])
    print(sorted_x)
    # [{'age': 10, 'name': 'Bart'}, {'age': 39, 'name': 'Homer'}]
    sorted_x = sorted(x, key=lambda x: x['name'], reverse=True)
    print(sorted_x)
    # [{'age': 39, 'name': 'Homer'}, {'age': 10, 'name': 'Bart'}]
    展开全文
  • 1.通过lambda表达式对列表里面的字典进行排序 x = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}] sorted_x = sorted(x, key=lambda x : x['name']) #姓名为升序排列 print(sorted_x ) sorted_x = ...

     1.通过lambda表达式对列表里面的字典进行排序

    x = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
    sorted_x = sorted(x, key=lambda x : x['name'])  #姓名为升序排列
    print(sorted_x )
    sorted_x = sorted(x, key=lambda x : x['name'],reverse=True) #姓名为降序序排列
    print(sorted_x )

     

    展开全文
  • Python 3.6开始,内置的dict将被订购好消息,所以OP的原始用例是从具有唯一字符串ID的数据库中检索到的映射对作为键和数值作为内置Python v3.6 + dict的,现在应该遵循插入顺序。如果说从数据库查询得到的两个...

    从Python 3.6开始,内置的dict将被订购

    好消息,所以OP的原始用例是从具有唯一字符串ID的数据库中检索到的映射对作为键和数值作为内置Python v3.6 + dict的值,现在应该遵循插入顺序。

    如果说从数据库查询得到的两个列表表达式如下:

    SELECT a_key,a_value FROM a_table ORDER BY a_value;

    将存储在两个Python元组中,k_seq和v_seq(由数字索引对齐,当然长度相同),然后:

    k_seq=("foo","bar","baz")v_seq=(0,1,42)ordered_map=dict(zip(k_seq,v_seq))

    允许稍后输出为:

    fork,vinordered_map.items():print(k,v)

    在这种情况下产生(对于新的Python 3.6+内置字典!):

    foo0bar1baz42

    每个v值相同的排序。

    在我的机器上安装Python 3.5的地方,它目前产生:

    bar1foo0baz42

    细节:

    正如Raymond Hettinger在2012年提出的那样(参见python-dev上的邮件主题为“更快速迭代的更紧凑词典”),现在(2016年)由Victor Stinner发送给python-dev,主题为“Python 3.6 dict” 紧凑并获得私有版本;并且关键字变得有序“由于问题27350的修复/实现”紧凑和有序的dict“在Python 3.6中我们现在可以使用内置的dict来维护插入顺序!!

    希望这将导致薄层OrderedDict实现作为第一步。 正如@ JimFasarakis-Hilliard所指出的那样,有些人在未来也会看到OrderedDict类型的用例。 我认为整个Python社区将仔细检查,如果这将经得起时间的考验,以及接下来的步骤将是什么。

    是时候重新考虑我们的编码习惯,不要错过稳定订购的可能性:

    关键字参数和

    (中间)dict存储

    第一个是因为它在某些情况下简化了函数和方法实现中的调度。

    第二,因为它鼓励更容易使用collections.OrderedDicts作为处理管道的中间存储。

    Raymond Hettinger在他的旧金山Python Meetup Group演讲2016-DEC-08上提供了解释“Python 3.6 Dictionaries背后的技术”的文档。

    也许相当一些Stack Overflow高度装饰的问答页面将收到此信息的变体,许多高质量的答案也需要每个版本更新。

    警告Empat(但也见下面更新2017-12-15):

    正如@ajcr正确地指出:“这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖它。” (来自whatsnew36)没有采摘,但引用被削减了一点悲观;-)。 它继续作为“(这可能在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现,以便为所有当前和未来的Python实现强制保持语义保持语义;这也是 有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5)。“

    因此,在某些人类语言(例如德语)中,用法形成语言,现在已经在whatsnew36中声明了...

    更新2017-12-15:

    在发往python-dev列表的邮件中,Guido van Rossum宣称:

    这样做。 “Dict保持插入秩序”是裁决。 谢谢!

    因此,dict插入排序的版本3.6 CPython副作用现在正成为语言规范的一部分(而不再仅仅是实现细节)。 Raymond Hettinger在讨论中提醒,该邮件线程还为collections.OrderedDict提出了一些明显的设计目标。

    展开全文
  • 试图弄清楚如何按值对字典列表进行排序,其中值以“自定义地图”列表中的字符串开头.例如,这里是要排序的数据:"buckets": [{"doc_count": 23,"key": "Major League Stuff"}...

    试图弄清楚如何按值对字典列表进行排序,其中值以“自定义地图”列表中的字符串开头.例如,这里是要排序的数据:

    "buckets": [

    {

    "doc_count": 23,

    "key": "Major League Stuff"

    },

    {

    "doc_count": 23,

    "key": "Football Stuff"

    },

    {

    "doc_count": 23,

    "key": "Football Stuff > Footballs"

    },

    {

    "doc_count": 23,

    "key": "Football Stuff > Footballs > Pro"

    },

    {

    "doc_count": 22,

    "key": "Football Stuff > Footballs > College"

    },

    {

    "doc_count": 20,

    "key": "Football Stuff > Football Stuff Collections > Neat Stuff"

    },

    {

    "doc_count": 19,

    "key": "Football Stuff > Helmets"

    },

    {

    "doc_count": 4,

    "key": "Jewelry"

    },

    {

    "doc_count": 4,

    "key": "Jewelry > Rings"

    },

    {

    "doc_count": 2,

    "key": "All Gifts"

    },

    {

    "doc_count": 2,

    "key": "Gifts for Her"

    },

    {

    "doc_count": 2,

    "key": "Gifts for Her > Jewelry"

    },

    {

    "doc_count": 2,

    "key": "Football Stuff > Footballs > Tykes"

    },

    {

    "doc_count": 1,

    "key": "Brand new items"

    },

    {

    "doc_count": 1,

    "key": "Jewelry > Rings and Bands"

    }

    {

    "doc_count": 1,

    "key": "Football Stuff > Footballs > High School"

    },

    {

    "doc_count": 1,

    "key": "Football Stuff > Pads"

    }

    ]

    我想根据这个列表对它进行排序:

    sort_map = ["Football Stuff",

    "Jewelry",

    "Gifts for Her",

    "Brand new items",

    "Major League Stuff",

    "All Gifts"]

    我有点想“startwith”可以工作,但我不确定如何

    buckets = sorted(buckets, key=lambda x: sort_map.index(x["key"].startswith[?]))

    任何帮助赞赏!

    旁注 – SO要求我编辑解释为什么这篇文章与其他“按价值排序”字样不同.在发布此内容之前,我确实查看了很多这样的内容,并且没有涉及匹配字符串部分的内容.所以我相信这不是重复的.

    展开全文
  • #字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) print sorted_x #[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)] #如果要降序排序,...
  • Python中,字典按值排序

    万次阅读 多人点赞 2018-09-06 15:37:28
    Python中,字典按值排序 我们可以用sorted高阶函数或者用列表的.sort()方法。 目录 在Python中,字典按值排序 一、sorted高阶函数 二、列表的.sort()方法 三、扩展 四、后记 一、sorted高阶函数 这种...
  • 1、按键排序 def dictionairy(): # 声明字典 key_value ={} # 初始化 key_value[2] = 56 key_value[1] = 2 key_value[5] = 12 key_value[4] = 24 key_value[6] = 18 key_value[3] = 323 ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 手记-- encoding=utf-8 --python3... 字典值排序(默认为升序)x = {1:2, 3:4, 4:3, 2:1, 0:0}sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))print sorted_x[(0, 0), (2, 1), (1, 2), (4, 3), (3...
  • Python列表排序

    2019-11-10 13:17:39
    Python方法sort()让你能够较为轻松地对列表进行排序。假设你有一个汽车列表,并要让其 中的汽车字母顺序排列。为简化这项任务,我们假设该列表中的所有都是小写的 cars = ['bmw', 'audi', 'toyota', 'subaru...
  • python列表排序,字典排序,列表中的字典排序 #-*- encoding=utf-8 -*- ... 字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} 1. sorted_x = sorted(x.iteritems(), key=operat...
  • Python字典、列表排序

    千次阅读 2013-09-04 16:53:44
    一、字典排序 ...Python中字典的排序分为“键”排序排序。 1、排序  排序就是根据字典的进行排序,可以使用内置的sorted()函数。  sorted(iterable[, cmp[, key[, re
  • Python - 字典按值(value)排序

    万次阅读 2015-07-25 20:41:05
    字典安值排序是一个伪命题. 字典本身是不能被排序的, 已经按照关键字(key)排序, 但是列表(list)和元组(tuple)可以排序, 所以字典需要转换列表后排序. 如import operator x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0} ...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 266
精华内容 106
关键字:

python列表按值排序

python 订阅