python排序例题_Python [习题] 字典排序

[习题] 对此字典分别按照value 和key 如何排序?

dic1 = {'and':40, 'a':54, 'is':60, 'path':139, 'the':124, 'os':49}

In [38]: dic1 = {'and':40, 'a':54, 'is':60, 'path':139, 'the':124, 'os':49}

...: print(sorted(zip(dic1.values(),dic1.keys()))) #按value的值升序

...: print(sorted(zip(dic1.values(),dic1.keys()),reverse=True)) #按value的值降序

...:

...: print(sorted(zip(dic1.keys(),dic1.values()))) #按key的ascii码升序

...: print(sorted(zip(dic1.keys(),dic1.values()),reverse=True)) #按key的ascii码降序

...:

...: print(sorted(dic1.items(),key=lambda x:x[1],)) #按value的值升序

...: print(sorted(dic1.items(),key=lambda x:x[1],reverse=True)) #按value的值降序

...:

...: print(sorted(dic1.items(),key=lambda x:x[0],)) #按key的ascii码升序

...: print(sorted(dic1.items(),key=lambda x:x[0],reverse=True)) #按key的ascii码降序

...:

[(40, 'and'), (49, 'os'), (54, 'a'), (60, 'is'), (124, 'the'), (139, 'path')]

[(139, 'path'), (124, 'the'), (60, 'is'), (54, 'a'), (49, 'os'), (40, 'and')]

[('a', 54), ('and', 40), ('is', 60), ('os', 49), ('path', 139), ('the', 124)]

[('the', 124), ('path', 139), ('os', 49), ('is', 60), ('and', 40), ('a', 54)]

[('and', 40), ('os', 49), ('a', 54), ('is', 60), ('the', 124), ('path', 139)]

[('path', 139), ('the', 124), ('is', 60), ('a', 54), ('os', 49), ('and', 40)]

[('a', 54), ('and', 40), ('is', 60), ('os', 49), ('path', 139), ('the', 124)]

[('the', 124), ('path', 139), ('os', 49), ('is', 60), ('and', 40), ('a', 54)]

知识点: zip(),sorted(),lambda

zip:

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

用法: zip(iter1 [,iter2 [...]]) --> zip object:

In [79]: a = 'abcdefg'

In [80]: b = '1234567890'

In [81]: zip(a,b)

Out[81]:

In [82]: c = zip(a,b)

In [83]: for i in c:

...: print(i)

...:

('a', '1')

('b', '2')

('c', '3')

('d', '4')

('e', '5')

('f', '6')

('g', '7')

sorted:

对指定可迭代对象iterable 排序并返回一个新对象,不改变原数据;key 可以设置为按str、int或者指定值(如字典的value)排序,默认是None,将按照默认对象类型排序,如果对象是str,则按ascii 码排序,如果是对象是int 数字,则按数字排序;reverse 默认升序(False),True 为降序。

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

lambda:

最后两处lambda 比较绕,可以在( http://pythontutor.com/visualize.html#mode=display )这个网站边调试边分析x 和x[1] 的值是什么。

以下截图中,lambda表达式中x的值是一个tuple("and",40),x[1] 就表示第1个元素(40),最终sorted 就是按字典的value 来进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值