Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2017 12:15:30

SomethingButNotNickName
Зарегистрирован: 2017-12-19
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка словаря

Доброго времени суток.
есть словарь

 dict1 = {
'вслово1' : [1,2,3,4],
'аслово2' : [11,22,33,44],
'бслово3' : [111,222,333,444]}
нужно отсортировать по ключу чтобы стало:
 dict1 = {
'аслово2' : [11,22,33,44],
'бслово3' : [111,222,333,444],
'вслово1' : [1,2,3,4]}
Найденный вариант:
 dict1= sorted(dict1.items(), key=lambda x: x[0])
Работает, но возвращает список кортежей.
  [('аслово2', [11,22,33,44]), (...), (...)]
А по условию должен быть словарь.

Отредактировано SomethingButNotNickName (Дек. 20, 2017 12:22:31)

Офлайн

#2 Дек. 20, 2017 12:21:06

SomethingButNotNickName
Зарегистрирован: 2017-12-19
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка словаря

Собственно

 dict1= sorted(dict1.items(), )
Работает точно так же.
Вопрос зачем эта часть?
 key=lambda x: x[0]

Офлайн

#3 Дек. 20, 2017 12:26:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сортировка словаря

SomethingButNotNickName
Словарь невозможно хранить в отсортированном виде, поздравьте того, кто вам дал такое условие - он балбес. Используйте OrderedDict если так уж нужен отсортированный словарь.



Офлайн

#4 Дек. 20, 2017 12:32:52

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

Сортировка словаря

SomethingButNotNickName
Вопрос зачем эта часть?
 key=lambda x: x[0]
Просто писал кто-то, кто плохо разбирается в питоне. Он написал масло масляное.



Офлайн

#5 Дек. 20, 2017 13:06:26

Elaphe
Зарегистрирован: 2015-02-04
Сообщения: 125
Репутация: +  5  -
Профиль   Отправить e-mail  

Сортировка словаря

Может, имеется в виду сортировка по ключу “на лету”, а не хранение?

Офлайн

#6 Дек. 20, 2017 14:12:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сортировка словаря

Elaphe
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?

Может быть что-то там и имеется в виду, но по факту введено дословно:

SomethingButNotNickName
Работает, но возвращает список кортежей.
SomethingButNotNickName
А по условию должен быть словарь.



Офлайн

#7 Дек. 20, 2017 14:21:08

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Сортировка словаря

Elaphe
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?
 >>> import this
The Zen of Python, by Tim Peters
......
In the face of ambiguity, refuse the temptation to guess.
......



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#8 Дек. 20, 2017 19:08:51

SomethingButNotNickName
Зарегистрирован: 2017-12-19
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка словаря

В задании данные хранятся в словаре, а выводятся на печать в отсортированном виде. Точка. Больше ничего. Попытка отсортировать словарь уже моя инициатива. Не знал, что это не возможно.
По поводу сортировки на лету можно подробнее?

Офлайн

#9 Дек. 20, 2017 19:12:53

Elaphe
Зарегистрирован: 2015-02-04
Сообщения: 125
Репутация: +  5  -
Профиль   Отправить e-mail  

Сортировка словаря

Вы сортировку уже сделали. Теперь просто распечатайте в цикле dict1.

Офлайн

#10 Дек. 20, 2017 20:22:57

SomethingButNotNickName
Зарегистрирован: 2017-12-19
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка словаря

По условию задачи первая функция получает информацию из файла и возвращает словарь.
Вторая функция в цикле запрашивает у пользователя что ему нужно и выводит информацию в отсортированном виде.
Если словарь не возможно хранить в отсортированном виде, то получается, что:
1) в памяти лежит не сортированный словарь,
2) по запросу юзера данные сортируются и выдаются юзеру выдается интересующая его часть,
3) в памяти по прежнему лежит не сортированный словарь,
4) по новому запросу опять будет произведена сортировка.

Таким образом, каждый запрос порождает сортировку. Не разумнее ли отсортировать словарь и хранить его в памяти сортированным (правда уже в виде списка)?

Словарь занимает сильно меньше места чем список? Или тут другие причины называемого условием задачи хранения инфы в виде словаря?


А есть способ сортировать словарь прямо во время его печати? В смысле так, чтобы исходный dict1 остался словарем и новая переменная не создавалась.
Способ нашел сам, но это ппц) Есть варианты попроще?)

  for i, el in list(enumerate(sorted(dict1.items(), ))   ):
    print('%-16s' % list(enumerate(sorted(dict1.items(),)))[i][1][0], ' : ', end='')
    print(list(enumerate(sorted(dict1.items(),)))[i][1][1][years.index(inquiry)]) 
Исходный словарь выглядит так:

 dict1 = {
'вслово1' : [1,2,3,4,5],
'аслово2' : [11,22,33,44,55],
'бслово3' : [111,222,333,444,555]}

Отредактировано SomethingButNotNickName (Дек. 20, 2017 21:59:38)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version