您的位置:

python字典的值按照自定义排序,python对字典的值排序

本文目录一览:

在Python 3 中的自定义排序怎么办

python3 sorted取消了对cmp的支持。 

python3 帮助文档: 

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

reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为False

key接受一个函数,这个函数只接受一个元素,默认为None

Key的作用原理

Python2中的自定义布尔函数cmp=custom_cmp(x, y)由Python3中的key=custom_key(x)代替。

在python3中,待比较元素x通过custom_key函数转化为Python能比较的值custom_key(x),进而再基于返回值进行排序。

例子1:

my_alphabet = ['a', 'b', 'c']def custom_key(word):

  numbers = []   for letter in word:

     numbers.append(my_alphabet.index(letter))   return numbers# python中的整数列表能够比较大小# custom_key('cbaba')==[2, 1, 0, 1, 0]x=['cbaba', 'ababa', 'bbaa']

x.sort(key=custom_key)123456789101112

例子2

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)]

sorted(students,key=lambda x: x[2]) #按照年龄来排序12

关于lambda表达式

例子3

默认sorted([True, False])==[False, True] (False=0 True=1)

一个字符串排序,排序规则:小写大写奇数偶数

#元组内(e1, e2, e3)的优先级排列为: e1 e2 e3sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)#input: 'asdf234GDSdsf23'#output: 'addffssDGS33224'12345

x.isdigit()的作用是把数字放在后边(True),字母放在前面(False).

x.isdigit() and int(x) % 2 == 0的作用是保证数字中奇数在前(False),偶数在后(True)。

x.isupper()的作用是在前面基础上,保证字母小写(False)在前大写在后(True).

最后的x表示在前面基础上,对所有类别数字或字母排序。

python字典中根据值的大小,按顺序排列键有什么方法?

s = {"a":"bb","b":"cc","c":"aa"}

def fun(s):

d = sorted(s.iteritems(),key=lambda t:t[1],reverse=False)

return d

d = fun(s)

print d

iteritems()得到的[(键,值)]的列表,通过sorted方法,指定排序的键值key是原来字典中的value属性,其中用到了匿名函数lambda,参数为t列表,返回第二个元素t[1],也就是每个键值对中的value, 从小到大排序时reverse=False,从大到小排序是True!

Python [1]  (英国发音:/ˈpaɪθən/美国发音:/ˈpaɪθɑːn/),是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU GeneralPublicLicense)协议。Python语法简洁清晰,特色之一是强制用空白符(whitespace)作为语句缩进。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面)

然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

python字典怎么排序

python字典怎么排序?

定义一个字典类型

mydict = {2: '小路', 3: '黎明', 1: '郭富城', 4:'周董'}

可分别打印 key和value 看一下数据

按KEY排序,使用了 lambda和 reverse= False(正序)

key和value都输出

reverse= True(逆序)

按value排序,汉字次序不是按拼音输出

sorted并不改变字典本身的数据次序。

输出后为列表和元组

可以 A = sorted(mydict.items(),key = lambda mydict:mydict[1],reverse= False) 赋值给A ,A的次序是变化后的

推荐:《Python教程》

注意事项

sorted并不改变字典本身的数据次序

如果要变化后的 可以赋值给另一个列表变量以上就是小编分享的关于python字典怎么排序的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

Python中字典按照指定列表的顺序排列

roles = ["OWNER", "RCOM", "HRGDL2", "HRM", "HRH", "MP", "HP", "VP", "GM"]

info = {"VP": "80003", "HRM": "F140019", "MP": "F130008", "HRGDL2": "F140390", "OWNER": "F133255", "RCOM": "F900151", "GM": "00903", "HP": "80355", "HRH": "81453"}

sorted_dict = map(lambda x:{x:info[x]}, roles)

print(sorted_dict)

关于python当中字典值排序的问题

#!/usr/bin/env python

# coding: utf-8

#

# author: Tim Wang

# date: Nov., 2014

# filename: baidu/qa3.py

"""以下代码仅提供扩展参考的方法,在2.7版本下可运行。"""

import re

def parser(dataserial, patt, keyname, *evalattrs):

    """对给定的dataserial数据序列,用patt进行正则解析

        对指定的evalattrs进行值转换,

        以其中的keyname为字典键值,

    """

    collector = {}

    for matched in filter(None, map(patt.match, dataserial)):

        data = matched.groupdict()

        for attr in evalattrs:

            data[attr] = eval(data[attr])

        collector[data.get(keyname)] = data

    return collector

def iterdictsort(dictdatas, sortattr):

    for v in sorted(dictdatas.values(),

                    key=lambda v: v.get(sortattr)):

        yield v

context = u"""

广州        2014-11-22    苹果    9    96

深圳        2014-11-23    香蕉    10    75

杭州        2014-11-24    番茄    5    43

北京        2014-11-25    橘子    8    24

"""

patt = re.compile(r"""^

                  (?Plocale\S+)

                  \s+

                  (?Pdate\S+)

                  \s+

                  (?Pproduct\S+)

                  \s+

                  (?Pqty\d+)

                  \s+

                  (?Pamount\d+)

                  \s*$""", re.I|re.U|re.X)

fmt = u"{locale} {date} {qty:4} {amount:8}"

datas = parser(context.splitlines(), patt, "locale", "qty", "amount")

print "="*32

print "\n".join(fmt.format(**data)

                for data in iterdictsort(datas, 'qty'))

print "="*32

print "\n".join(fmt.format(**data)

                for data in iterdictsort(datas, 'amount'))

python字典有多个值的排序

s = {"a":"bb","b":"cc","c":"aa"}

def fun(s):

d = sorted(s.iteritems(),key=lambda t:t[1],reverse=False)

return d

d = fun(s)

print d

iteritems() 得到的[(键,值)]的列表, 通过sorted方法,指定排序的键值key是原来字典中的value属性,其中用到了匿名函数lambda, 参数为t列表,返回第二个元素t[1],也就是每个键值对中的value, 从小到大排序时 reverse=False,从大到小排序是True!