Python使用sorted对字典列表进行排序

2024-06-03 04:14:09 发布

您现在位置:Python中文网/ 问答频道 /正文

如何对字典中的字典进行排序,如下所示:

{
  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
          }
        }

      ]
    }

提前谢谢


Tags: name名称falsetrue列表uiddate字典