2017-07-26 193 views
0

对不起,我的第一篇文章必须是一个问题。 我做了一些搜索,找不到排序基于一个键的词典列表的方式。Python按键排序字典列表

假设我有字典

[0]{Number:123, Name:Bill, Age:32, Sex:Male} 
[1]{Number:93, Name:Billy, Age:23, Sex:Male} 
[2]{Number:113, Name:Billie, Age:32, Sex:Female} 
[3]{Number:8, Name:Wills, Age:3, Sex: Male} 
[4]{Number:8, Name:Wills, Age:4, Sex: Male} 
[5]{Number:8, Name:Wills, Age:5, Sex: Male} 
[6]{Number:8, Name:Wills, Age:6, Sex: Male} 

的这个名单,我想排序或迭代次数上这个名单:按年龄值,然后:值,以使新的列表是这样

[0]{Number:8, Name:Wills, Age:3, Sex: Male} 
[1]{Number:8, Name:Wills, Age:4, Sex: Male} 
[2]{Number:8, Name:Wills, Age:5, Sex: Male} 
[3]{Number:8, Name:Wills, Age:6, Sex: Male} 
[4]{Number:93, Name:Billy, Age:23, Sex:Male} 
[5]{Number:113, Name:Billie, Age:32, Sex:Female} 
[6]{Number:123, Name:Bill, Age:32, Sex:Male} 

到目前为止,我只能对列表中的一个键进行排序,该列表对列表中的词典条目进行排序,并保持列表索引相同。这不是我想要的。

sorted_data_list = sorted(data_list, key = lambda x: x['Number']) 

编辑:使列表连续。

+0

对不起,我是从列表中删除,但不是这个。它是连续的。 – Joylove

+0

它是9400项长,每个字典中有36个元素! – Joylove

+0

你的问题已经得到解答,但下次你可以只包含一小部分真实数据 - 你发布的内容与Python无关,所以很难弄清楚你想要做什么。 – perigon

回答

2

更改键拉姆达X:(X [ '编号']中,x [ '年龄'])

这将创建一个元组,和元组由第一元件,然后第二个元素进行排序。

+1

应该是'''lambda x''',而不是'''lambda [x]''' – perigon

+0

哦,是的,我的错误。应该是lambda x(没有[])而是 – user2341726

+0

谢谢先生们。标记为sorted_data_list = sorted(data_list,key = lambda x:(x ['Number'],x ['Age'])) – Joylove