Python使用排序来排序字典列表

时间:2016-02-04 07:13:41

标签: python sorting

如何在字典中对字典进行排序,如以下数据:

{
  u'attendance': [
    {
      u'1': {
        u'name': u'B',
        u'total_wh': u'09:13:00',
        u'brk_flag': False,
        u'date': u'2016-01-26',
        u'wh_flag': True,
        u'total_brk': u'00:02:00',
        u'uid': 0
      },
      u'0': {
        u'name': u'B',
        u'total_wh': u'10:08:00',
        u'brk_flag': False,
        u'date': u'2016-01-27',
        u'wh_flag': True,
        u'total_brk': u'02:47:00',
        u'uid': 0
      },
      u'2': {
        u'name': u'B',
        u'total_wh': u'07:36:00',
        u'brk_flag': False,
        u'date': u'2016-01-25',
        u'wh_flag': False,
        u'total_brk': u'00:10:00',
        u'uid': 0
      }
    },
    {
      u'0': {
        u'name': u'F',
        u'total_wh': u'06:04:00',
        u'brk_flag': True,
        u'date': u'2016-01-26',
        u'wh_flag': True,
        u'total_brk': u'00:18:00',
        u'uid': 54
      }
    },
    {
      u'1': {
        u'name': u'C',
        u'total_wh': u'07:24:00',
        u'brk_flag': False,
        u'date': u'2016-01-26',
        u'wh_flag': False,
        u'total_brk': u'',
        u'uid': 2000
      },
      u'0': {
        u'name': u'C',
        u'total_wh': u'10:01:00',
        u'brk_flag': False,
        u'date': u'2016-01-27',
        u'wh_flag': True,
        u'total_brk': u'',
        u'uid': 2000
      }
    },
    {
      u'1': {
        u'name': u'A',
        u'total_wh': u'04:05:00',
        u'brk_flag': True,
        u'date': u'2016-01-26',
        u'wh_flag': True,
        u'total_brk': u'00:05:00',
        u'uid': 11014
      },
      u'0': {
        u'name': u'A',
        u'total_wh': u'07:54:00',
        u'brk_flag': False,
        u'date': u'2016-01-27',
        u'wh_flag': True,
        u'total_brk': u'00:10:00',
        u'uid': 11014
      }
    }
  ]
}

我正在考虑遍历列表,单独列出每个字典并按日期对其进行排序,例如:

  [sorted(x.items(),key=lambda x: x[1]['date']) for x in d['attendance']]

但我仍然需要对所有字典组合在一起进行排序,让我说我想按名称排序......?这样做的最佳方式是什么

按名称排序的示例:

   {
      u'attendance': [
 {
          u'1': {
            u'name': u'A',
            u'total_wh': u'04:05:00',
            u'brk_flag': True,
            u'date': u'2016-01-26',
            u'wh_flag': True,
            u'total_brk': u'00:05:00',
            u'uid': 11014
          },
          u'0': {
            u'name': u'A',
            u'total_wh': u'07:54:00',
            u'brk_flag': False,
            u'date': u'2016-01-27',
            u'wh_flag': True,
            u'total_brk': u'00:10:00',
            u'uid': 11014
          }
        },
        {
          u'1': {
            u'name': u'B',
            u'total_wh': u'09:13:00',
            u'brk_flag': False,
            u'date': u'2016-01-26',
            u'wh_flag': True,
            u'total_brk': u'00:02:00',
            u'uid': 0
          },
          u'0': {
            u'name': u'B',
            u'total_wh': u'10:08:00',
            u'brk_flag': False,
            u'date': u'2016-01-27',
            u'wh_flag': True,
            u'total_brk': u'02:47:00',
            u'uid': 0
          },
          u'2': {
            u'name': u'B',
            u'total_wh': u'07:36:00',
            u'brk_flag': False,
            u'date': u'2016-01-25',
            u'wh_flag': False,
            u'total_brk': u'00:10:00',
            u'uid': 0
          }
        },
        {
          u'1': {
            u'name': u'C',
            u'total_wh': u'07:24:00',
            u'brk_flag': False,
            u'date': u'2016-01-26',
            u'wh_flag': False,
            u'total_brk': u'',
            u'uid': 2000
          },
          u'0': {
            u'name': u'C',
            u'total_wh': u'10:01:00',
            u'brk_flag': False,
            u'date': u'2016-01-27',
            u'wh_flag': True,
            u'total_brk': u'',
            u'uid': 2000
          }
        },
{
          u'0': {
            u'name': u'F',
            u'total_wh': u'06:04:00',
            u'brk_flag': True,
            u'date': u'2016-01-26',
            u'wh_flag': True,
            u'total_brk': u'00:18:00',
            u'uid': 54
          }
        }

      ]
    }

提前致谢

0 个答案:

没有答案