免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8553 | 回复: 13
打印 上一主题 下一主题

求助:python元组作为字典的key的排序问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-22 16:17 |只看该作者 |倒序浏览
本帖最后由 又小又白 于 2012-08-22 16:17 编辑

一个字典a
  1. a={(10,'abc'):1,(8,'def'):2,(12,'ghi'):3}
复制代码
想对字典a中的键(元组)的第一个值进行排序要怎么做呢,参考了很多资料都没找到答案,谢谢大家了!

论坛徽章:
0
2 [报告]
发表于 2012-08-22 16:51 |只看该作者
  1. >>> a
  2. {(12, 'ghi'): 3, (8, 'def'): 2, (10, 'abc'): 1}
  3. >>> b=sorted(a,key=lambda x: x[0])
  4. >>> b
  5. [(8, 'def'), (10, 'abc'), (12, 'ghi')]
  6. >>>
复制代码
b是排序后的键值

论坛徽章:
0
3 [报告]
发表于 2012-08-22 21:32 |只看该作者
字典本身貌似是无序的

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
4 [报告]
发表于 2012-08-22 23:49 |只看该作者
排序后变成了数组

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2012-08-23 21:07 |只看该作者
  1. a = {(12, 'ghi'): 3, (8, 'def'): 2, (10, 'abc'): 1}
  2. b = sorted(a.items(), key=lambda x: x[0][0])
  3. print(b)
复制代码
字典本来就没次序.

论坛徽章:
0
6 [报告]
发表于 2012-08-23 23:19 |只看该作者
本帖最后由 Hadron74 于 2012-08-23 23:20 编辑

回复 3# luoyan_xy

也可以用有序字典,要求python2.7以上。在collections中:

http://docs.python.org/library/collections.html
  1. >>> a={(10,'abc'):1,(8,'def'):2,(12,'ghi'):3}
  2. >>> from collections import OrderedDict
  3. >>> b=OrderedDict()
  4. >>> for c in sorted(a,key=lambda x : x[0]):
  5. ...     b[c]=a[c]
  6. ...
  7. >>> b
  8. OrderedDict([((8, 'def'), 2), ((10, 'abc'), 1), ((12, 'ghi'), 3)])
  9. >>> b[(8,'def')]
  10. 2
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-08-24 11:47 |只看该作者
转换成列表,然后在排序

论坛徽章:
0
8 [报告]
发表于 2012-08-28 10:36 |只看该作者
Hadron74 发表于 2012-08-22 16:51
b是排序后的键值

谢谢,试了下是可以的,想问下关于lambda表达式的资料可以在哪边参考呢,谢谢您的回复。

论坛徽章:
0
9 [报告]
发表于 2012-08-28 13:06 |只看该作者

论坛徽章:
0
10 [报告]
发表于 2012-08-28 17:16 |只看该作者
同意上面的,总结了下 dict,list 排序的方法,可以参考博客:http://www.yihaomen.com/article/java/237.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP