按名称排序python字典?

时间:2011-09-21 17:00:30

标签: python sorting dictionary

我有一个python字典,我想根据名称排序:

location_map_india = {
  101: {'name': 'Andaman & Nicobar Islands', 'lat': 11.96, 'long': 92.69, 'radius': 294200},  
  108: {'name': 'Andhra Pradesh', 'lat': 17.04, 'long': 80.09, 'radius': 294200},
...
}

它并不像我期望的那样出现。我试过了:

location_map_india = sorted(location_map_india.iteritems(), key=lambda x: x.name)

以上不起作用。我该怎么办?

更新

允许以下内容,并按预期行事。谢谢你的帮助。 代码:

location_map_india = sorted(location_map_india.iteritems(), key=lambda x: x[1]["name"])

模板:

{% for key,value in location_map_india %}<option value="{{key}}" >{{value.name}}</option>{% endfor %}

4 个答案:

答案 0 :(得分:6)

你很亲密。尝试:

location_map_india = sorted(location_map_india.iteritems(), key=lambda x: x[1]["name"])

但结果将是一个列表而不是一个字典。 dict是无序的。

答案 1 :(得分:3)

如果您使用的是python 2.7或更高版本,请查看OrderedDict。使用它可以解决您的问题。

>>> OrderedDict(sorted(d.items(), key=lambda x: x[1]['name']))

答案 2 :(得分:1)

你应该试试

location_map_india = sorted(location_map_india.items(), key=lambda x: x[1]['name'])

答案 3 :(得分:1)

如果您使用的字典必须以任何方式排序,那么您没有使用正确的数据结构。

尝试使用列表或元组。