我有一个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 %}
答案 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)
如果您使用的字典必须以任何方式排序,那么您没有使用正确的数据结构。
尝试使用列表或元组。