【发布时间】:2011-11-22 03:40:01
【问题描述】:
我有一个 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 %}
【问题讨论】:
-
字典没有顺序,因此无法排序。你的目标是什么?
-
根据您的 Python 版本,您可以使用 OrderedDict 而不是标准字典。它在集合模块中。否则,请解释您的意图以获得更好的方法建议。
-
感谢您的建议。我有一个数据结构,我想按名称按自然顺序对其进行排序。看来没那么简单。
-
使用
.items()而不是.iteritems()以确保与 Python 3.x 的兼容性
标签: python sorting dictionary