Найти - Пользователи
Полная версия: Сортировка словаря
Начало » Python для новичков » Сортировка словаря
1 2 3
SomethingButNotNickName
Доброго времени суток.
есть словарь
 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
Собственно
 dict1= sorted(dict1.items(), )
Работает точно так же.
Вопрос зачем эта часть?
 key=lambda x: x[0]
FishHook
SomethingButNotNickName
Словарь невозможно хранить в отсортированном виде, поздравьте того, кто вам дал такое условие - он балбес. Используйте OrderedDict если так уж нужен отсортированный словарь.
py.user.next
SomethingButNotNickName
Вопрос зачем эта часть?
 key=lambda x: x[0]
Просто писал кто-то, кто плохо разбирается в питоне. Он написал масло масляное.
Elaphe
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?
FishHook
Elaphe
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?

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

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

PEHDOM
Elaphe
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?
 >>> import this
The Zen of Python, by Tim Peters
......
In the face of ambiguity, refuse the temptation to guess.
......
SomethingButNotNickName
В задании данные хранятся в словаре, а выводятся на печать в отсортированном виде. Точка. Больше ничего. Попытка отсортировать словарь уже моя инициатива. Не знал, что это не возможно.
По поводу сортировки на лету можно подробнее?
Elaphe
Вы сортировку уже сделали. Теперь просто распечатайте в цикле dict1.
SomethingButNotNickName
По условию задачи первая функция получает информацию из файла и возвращает словарь.
Вторая функция в цикле запрашивает у пользователя что ему нужно и выводит информацию в отсортированном виде.
Если словарь не возможно хранить в отсортированном виде, то получается, что:
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]}

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB