Форум сайта python.su
Доброго времени суток.
есть словарь
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)
Офлайн
Собственно
dict1= sorted(dict1.items(), )
key=lambda x: x[0]
Офлайн
SomethingButNotNickName
Словарь невозможно хранить в отсортированном виде, поздравьте того, кто вам дал такое условие - он балбес. Используйте OrderedDict если так уж нужен отсортированный словарь.
Офлайн
SomethingButNotNickNameПросто писал кто-то, кто плохо разбирается в питоне. Он написал масло масляное.
Вопрос зачем эта часть?
key=lambda x: x[0]
Офлайн
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?
Офлайн
Elaphe
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?
SomethingButNotNickName
Работает, но возвращает список кортежей.
SomethingButNotNickName
А по условию должен быть словарь.
Офлайн
Elaphe
Может, имеется в виду сортировка по ключу “на лету”, а не хранение?
>>> import this The Zen of Python, by Tim Peters ...... In the face of ambiguity, refuse the temptation to guess. ......
[code python][/code]
Офлайн
В задании данные хранятся в словаре, а выводятся на печать в отсортированном виде. Точка. Больше ничего. Попытка отсортировать словарь уже моя инициатива. Не знал, что это не возможно.
По поводу сортировки на лету можно подробнее?
Офлайн
Вы сортировку уже сделали. Теперь просто распечатайте в цикле dict1.
Офлайн
По условию задачи первая функция получает информацию из файла и возвращает словарь.
Вторая функция в цикле запрашивает у пользователя что ему нужно и выводит информацию в отсортированном виде.
Если словарь не возможно хранить в отсортированном виде, то получается, что:
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)
Офлайн