Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 8, 2013 00:37:45

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

k0st1an
А в чем проблема?
Для второго примера…

for name in rr2:
    print rr[name]["x"]



Офлайн

#2 Фев. 8, 2013 00:44:46

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

py.user.next
Что-то первый код не работает….

d = {'test1': {'x': 12, 'y': 20}, 'test2': {'x': 11, 'y': 22}, 'test3': {'x': 14, 'y': 22}}
for k in sorted(d, key=lambda i: int(i[-1]), reverse=True):
    print(k, '->', d[k])
Должно выдать…
('test2', '->', {'y': 22, 'x': 11})
('test3', '->', {'y': 22, 'x': 14})
('test1', '->', {'y': 20, 'x': 12})
Сортировка ведь осуществляется по значению “х” :)



Офлайн

#3 Фев. 8, 2013 04:29:17

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

ну как бы новый отсортированный словарь вы не получите, так как значения словаря хранятся в неотсортированном порядке, если нужен новый отсортированный словарь юзайте http://docs.python.org/2/library/collections.html#collections.OrderedDict

если нужно просто получить доступ к определенныйм эл-там словаря в зависимости от ‘x’, то никаких for:

>>> rr = {'test1': {'x': 12, 'y': 20}, 'test2': {'x': 11, 'y': 22}}
>>> sorted(rr, key=lambda var: rr[var]['x'])
['test2', 'test1']



Офлайн

#4 Фев. 8, 2013 10:11:44

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

sorted(rr, key=lambda var: rr[var]['x'])
Блин. Знал же, что можно управлять сортировкой с помощью аргумента key, но забыл. Как раз напомнили. Спасибо.



Отредактировано 4kpt (Фев. 8, 2013 10:20:55)

Офлайн

#5 Фев. 8, 2013 23:03:55

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

Fibio
если нужно просто получить доступ к определенныйм эл-там словаря в зависимости от ‘x’, то никаких for:
>>> rr = {'test1': {'x': 12, 'y': 20}, 'test2': {'x': 11, 'y': 22}}
>>> sorted(rr, key=lambda var: rr[var]['x'])
['test2', 'test1']

ООО я как раз пробовал такой вариант… Но ошибся с ключами… После сортировки можно будет применить for и пострить новый объект, копию rr, но в нужном виде. Потери будут минимальны (хотя не грамотно )

И надо покрутить OrderedDict, спасибо )



—-
memento mori

Офлайн

#6 Фев. 9, 2013 04:22:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

4kpt
Сортировка ведь осуществляется по значению “х” :)
а я что-то подумал, что он хочет просто ключи словаря отсортировать

>>> d = {'test1': {'x': 12, 'y': 20}, 'test2': {'x': 11, 'y': 22}}
>>> for k in sorted(d, key=lambda i: d[i]['x']):
...     print(k, '->', d[k])
... 
test2 -> {'x': 11, 'y': 22}
test1 -> {'x': 12, 'y': 20}
>>>



Офлайн

#7 Фев. 9, 2013 11:16:51

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

py.user.next
Я тоже у него пол дня допытывался, что он хочет…



Офлайн

#8 Фев. 9, 2013 12:38:53

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Сортировка словаря (+ вложенный словарь)

А я уже зарекся давать ответы на нечетко сформулированные вопросы. Было уже не раз. Чето стараешься, а на 10й пост оказывается, что ТС хотел совсем не это. Формулируйте вопросы четко и сразу!!!

Офлайн

#9 Фев. 9, 2013 13:03:38

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Сортировка словаря (+ вложенный словарь)

dimy44
В идеале это пост такого характера.
Дано то-то то-то.
Надо получить то-то то-то.
Пытался так-то и так-то.
ПОМОГИТЕ ПОЖАЛУЙСТА :)



Офлайн

#10 Фев. 9, 2013 13:14:00

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Сортировка словаря (+ вложенный словарь)

абсолютно верно. Дано. Получить хочу то-то и то-то, нюансы такие-то и такие-то. Хсн, пусть даже не пытался, если задача интересная, ответ дадут. Иной раз лучше честно признаться, что ноль, чем иммитировать попытку решения (что элементарно вычисляется). Нечетко сформулированный вопрос- это неуважение к людям, которые отбросят свои дела, чтоб вам попытаться бескорыстно помочь. Все ИМХО.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version