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