Сортировка словаря питона по имени? - PullRequest
2 голосов
/ 21 сентября 2011

У меня есть словарь 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 ]

6 голосов
/ 21 сентября 2011

Вы рядом.Попробуйте:

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

, но результатом будет список, а не диктат.Дикт беспорядочный.

3 голосов
/ 21 сентября 2011

Если вы используете Python 2.7 или выше, взгляните на OrderedDict .Использование может решить вашу проблему.

>>> OrderedDict(sorted(d.items(), key=lambda x: x[1]['name']))
1 голос
/ 21 сентября 2011

Если вы используете словарь, который каким-либо образом должен иметь порядок, вы не используете правильную структуру данных.

Вместо этого попробуйте список или кортежи.

1 голос
/ 21 сентября 2011

вы должны попробовать

location_map_india = sorted(location_map_india.items(), key=lambda x: x[1]['name'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...