本文目录一览:
- 1、在Python 3 中的自定义排序怎么办
- 2、python字典中根据值的大小,按顺序排列键有什么方法?
- 3、python字典怎么排序
- 4、Python中字典按照指定列表的顺序排列
- 5、关于python当中字典值排序的问题
- 6、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!