2013-03-03 118 views
2

用下面排序python数组?

代码

arr = [{"name":"joe", "hotdogs":5},{"name":"april", "hotdogs":5},{"name":"ryan", "hot dogs":8}] 

如何在Python排序,如类型的字典数组的元素按名称排序?

arr = [{"name":"april", "hotdogs":5},{"name":"joe", "hotdogs":5},{"name":"ryan", "hotdogs":8}] 

如何应用一些函数来排序数组中的字典?

+0

您已有17个问题;现在是时候学习[如何用markdown格式化问题](http://meta.stackoverflow.com/editing-help)。 – rds 2013-03-03 17:06:09

+0

@rds非常有用,谢谢! – Setsuna 2013-03-03 17:07:18

+0

这是你的实际数据结构还是一个简化的例子? – 2013-03-03 17:24:51

回答

5

像这样:

arr.sort(key=operator.itemgetter('name')) 
+0

+1这绝对是最好的方法。 – hughdbrown 2013-03-03 17:49:02

0

如何

>>> import collections 
>>> collections.OrderedDict(april=5, joe=5, ryan=8) 
OrderedDict([('april', 5), ('joe', 5), ('ryan', 8)] 

或每DSM的评论

>>> collections.OrderedDict([('april', 5), ('joe', 5), ('ryan', 8)]) 
OrderedDict([('april', 5), ('joe', 5), ('ryan', 8)]) 
+1

虽然'OrderedDict'确实保持顺序,但它不能与该调用语法一起使用。例如,尝试'collections.OrderedDict(四月= 5,莱恩= 8,乔= 5)'。问题是这个类传递了一个无序的关键字参数字典。 – DSM 2013-03-03 17:36:49

+0

跛脚。感谢帝斯曼,我不知道。 – 2013-03-03 18:29:24