按多个键对字典进行排序,值为string、python

按多个键对字典进行排序,值为string、python,python,sorting,dictionary,Python,Sorting,Dictionary,我有一本这样的字典: Data={'name':['Sue','Sue','Jim','Lily'], 'Date':['2013-12-11','2013-12-11','2013-11-12','2013-11-12']. 'Time':['12:00:00','11:30:00','10:00:00','13:00:00']} Data={'name':['Jim','Lily','Sue','Sue'], 'Date':['2013-11-12','2013-11-12',

我有一本这样的字典:

Data={'name':['Sue','Sue','Jim','Lily'],
  'Date':['2013-12-11','2013-12-11','2013-11-12','2013-11-12'].
  'Time':['12:00:00','11:30:00','10:00:00','13:00:00']}
Data={'name':['Jim','Lily','Sue','Sue'],
  'Date':['2013-11-12','2013-11-12','2013-12-11','2013-12-11'],
  'Time':['10:00:00',,'13:00:00','11:30:00','12:00:00']}
我想先按名称对字典排序,然后按日期排序,最后按时间排序。如下所示:

Data={'name':['Sue','Sue','Jim','Lily'],
  'Date':['2013-12-11','2013-12-11','2013-11-12','2013-11-12'].
  'Time':['12:00:00','11:30:00','10:00:00','13:00:00']}
Data={'name':['Jim','Lily','Sue','Sue'],
  'Date':['2013-11-12','2013-11-12','2013-12-11','2013-12-11'],
  'Time':['10:00:00',,'13:00:00','11:30:00','12:00:00']}

我不想导入任何模块。

大量的
zip
s,但这会根据彼此的值对字典中的项进行排序

dict(zip(('name','Date','Time'),zip(*sorted(zip(Data['name'],Data['Date'],Data['Time'])))))

{'Date': ('2013-11-12', '2013-11-12', '2013-12-11', '2013-12-11'), 'name': ('Jim', 'Lily', 'Sue', 'Sue'), 'Time': ('10:00:00', '13:00:00', '11:30:00', '12:00:00')}

有很多
zip
s,但这会根据彼此的值对字典中的项进行排序

dict(zip(('name','Date','Time'),zip(*sorted(zip(Data['name'],Data['Date'],Data['Time'])))))

{'Date': ('2013-11-12', '2013-11-12', '2013-12-11', '2013-12-11'), 'name': ('Jim', 'Lily', 'Sue', 'Sue'), 'Time': ('10:00:00', '13:00:00', '11:30:00', '12:00:00')}

有很多
zip
s,但这会根据彼此的值对字典中的项进行排序

dict(zip(('name','Date','Time'),zip(*sorted(zip(Data['name'],Data['Date'],Data['Time'])))))

{'Date': ('2013-11-12', '2013-11-12', '2013-12-11', '2013-12-11'), 'name': ('Jim', 'Lily', 'Sue', 'Sue'), 'Time': ('10:00:00', '13:00:00', '11:30:00', '12:00:00')}

有很多
zip
s,但这会根据彼此的值对字典中的项进行排序

dict(zip(('name','Date','Time'),zip(*sorted(zip(Data['name'],Data['Date'],Data['Time'])))))

{'Date': ('2013-11-12', '2013-11-12', '2013-12-11', '2013-12-11'), 'name': ('Jim', 'Lily', 'Sue', 'Sue'), 'Time': ('10:00:00', '13:00:00', '11:30:00', '12:00:00')}

在我看来,您似乎假设每个索引(字典中的值)中的每个元素构成一种组,就像一个组是——

'name':'Sue'
'Date':'2013-12-11'
'Time':'12:00:00'
从你的要求中我可以看出,这似乎是一个团体。在这种情况下,您的数据结构是错误的。您应该使用字典列表,其中每个字典都是上面的一组

这类词典列表的示例如下:-

Data = [{'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'}]
完成此操作后,您就可以轻松地将此字典列表排序为-

sorted(Data, key = lambda x: (x['name'], x['Date'], x['Time']))
给出结果-

[{'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'}]

在我看来,您似乎假设每个索引(字典中的值)中的每个元素构成一种组,就像一个组是——

'name':'Sue'
'Date':'2013-12-11'
'Time':'12:00:00'
从你的要求中我可以看出,这似乎是一个团体。在这种情况下,您的数据结构是错误的。您应该使用字典列表,其中每个字典都是上面的一组

这类词典列表的示例如下:-

Data = [{'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'}]
完成此操作后,您就可以轻松地将此字典列表排序为-

sorted(Data, key = lambda x: (x['name'], x['Date'], x['Time']))
给出结果-

[{'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'}]

在我看来,您似乎假设每个索引(字典中的值)中的每个元素构成一种组,就像一个组是——

'name':'Sue'
'Date':'2013-12-11'
'Time':'12:00:00'
从你的要求中我可以看出,这似乎是一个团体。在这种情况下,您的数据结构是错误的。您应该使用字典列表,其中每个字典都是上面的一组

这类词典列表的示例如下:-

Data = [{'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'}]
完成此操作后,您就可以轻松地将此字典列表排序为-

sorted(Data, key = lambda x: (x['name'], x['Date'], x['Time']))
给出结果-

[{'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'}]

在我看来,您似乎假设每个索引(字典中的值)中的每个元素构成一种组,就像一个组是——

'name':'Sue'
'Date':'2013-12-11'
'Time':'12:00:00'
从你的要求中我可以看出,这似乎是一个团体。在这种情况下,您的数据结构是错误的。您应该使用字典列表,其中每个字典都是上面的一组

这类词典列表的示例如下:-

Data = [{'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'}]
完成此操作后,您就可以轻松地将此字典列表排序为-

sorted(Data, key = lambda x: (x['name'], x['Date'], x['Time']))
给出结果-

[{'Date': '2013-11-12', 'Time': '10:00:00', 'name': 'Jim'},
 {'Date': '2013-11-12', 'Time': '13:00:00', 'name': 'Lily'},
 {'Date': '2013-12-11', 'Time': '11:30:00', 'name': 'Sue'},
 {'Date': '2013-12-11', 'Time': '12:00:00', 'name': 'Sue'}]

你说的分类词典是什么意思?您的输出显示您正在对列表进行排序,这些列表是字典中的值。在我看来,您的数据结构似乎有误。你需要的是词典列表,而不是列表词典。什么是排序词典?您的输出显示您正在对列表进行排序,这些列表是字典中的值。在我看来,您的数据结构似乎有误。你需要的是词典列表,而不是列表词典。什么是排序词典?您的输出显示您正在对列表进行排序,这些列表是字典中的值。在我看来,您的数据结构似乎有误。你需要的是词典列表,而不是列表词典。什么是排序词典?您的输出显示您正在对列表进行排序,这些列表是字典中的值。在我看来,您的数据结构似乎有误。你需要的是词典列表,而不是列表词典。