免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 追忆的风筝
打印 上一主题 下一主题

子字典排序 [复制链接]

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
11 [报告]
发表于 2012-08-02 15:20 |只看该作者
本帖最后由 cdtits 于 2012-08-02 15:24 编辑

回复 9# ssfjhh
  1. Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
  2. Type "copyright", "credits" or "license()" for more information.
  3. >>> a = [('a', '23'), ('b', '1'), ('c', '21'), ('d', '22'), ('e', '2'), ('f', '11')]
  4. >>> a
  5. [('a', '23'), ('b', '1'), ('c', '21'), ('d', '22'), ('e', '2'), ('f', '11')]
  6. >>> a.sort(key=lambda x:x[1])
  7. >>> a
  8. [('b', '1'), ('f', '11'), ('e', '2'), ('c', '21'), ('d', '22'), ('a', '23')]
  9. >>> a.sort(key=lambda x:int(x[1]))
  10. >>> a
  11. [('b', '1'), ('e', '2'), ('f', '11'), ('c', '21'), ('d', '22'), ('a', '23')]
  12. >>>
复制代码

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
12 [报告]
发表于 2012-08-02 19:55 |只看该作者
回复 9# ssfjhh


    a.sort(key=lambda x:int(x[1]))
    print a

论坛徽章:
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
13 [报告]
发表于 2012-08-03 13:22 |只看该作者
  1. [liangdong@bb-browser-test00.vm.baidu.com py_project]$ cat main.py
  2. #!/usr/local/bin/python
  3. # -*- coding: utf-8 -*-

  4. def sort_dict(dict_data):
  5.         pair_list = dict_data.items()
  6.         def cmp(left, right):
  7.                 from datetime import datetime
  8.                 date_fmt = "%Y-%m-%d"
  9.                 date_left = datetime.strptime(left[1]['start'], date_fmt)
  10.                 date_right = datetime.strptime(right[1]['start'], date_fmt)
  11.                 if date_left < date_right:
  12.                         return -1
  13.                 elif date_right < date_left:
  14.                         return 1
  15.                 else:
  16.                         return 0
  17.         pair_list.sort(cmp)
  18.         return pair_list



  19. if __name__ == "__main__":
  20.         dict_data = {"1321":{"start": "2012-07-22", "c": "1"}, "21321":{"start": "2012-07-21", "c": "1"}}
  21.         sorted_list = sort_dict(dict_data)
  22.         print sorted_list
复制代码

论坛徽章:
0
14 [报告]
发表于 2012-08-03 13:27 |只看该作者
回复 13# linux_c_py_php

这个比较完整,有通用性,不会出错。赞


   

论坛徽章:
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
15 [报告]
发表于 2012-08-03 14:15 |只看该作者
会出错的, 我没做严格检查, 比如start格式不规范等, 应该做检测并抛出异常.

回复 14# Hadron74


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP