Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 138

Сортировка списка словарей по ключу

24.11.2022, 13:46. Показов 1474. Ответов 3

Студворк — интернет-сервис помощи студентам
Всем привет! Помогите решить задачку.

Есть список словарей:

list_of_elements = [{"яблоко": "черное"}, {"яблоко": "белое"}, {"яблоко": "желтое"}, {"яблоко": "черное"}, {"яблоко": "синие"}, {"груша": "черное"}, {"груша": "белое"}, {"груша": "желтое"}, {"груша": "синие"}, {"груша": "желтое"}, {"апельсин": "черное"}, {"апельсин": "белое"}, {"апельсин": "желтое"}, {"апельсин": "белое"}]


Нужно отсортировать его, чтобы получилось:

[{"яблоко": ["черное", "белое", "желтое", "синие"]}, {"груша": ["черное", "белое", "желтое"]}, {"апельсин": ["черное", "белое", "желтое"]}]
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2022, 13:46
Ответы с готовыми решениями:

Сортировка списка состоящего из словарей
Приветствую. Есть список состоящий из словарей: l = Пытаюсь провести сортировку по значению 'number' с помощью следующего кода: ...

Сортировка списка по ключу
В случае сортировки списка по ключу при заданной функции: >>> help(sorted) Help on built-in function sorted in module builtins: ...

Поиск по списку словарей и вывод списка словарей
У меня есть список словарей, например: data= Как мне вывести этот список, чтобы каждый словарь был на каждой отдельной строке,...

3
 Аватар для rim41
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
24.11.2022, 15:05
Python
1
2
3
4
5
6
7
All = {}
lst = [{"яблоко": "черное"}, {"яблоко": "белое"}, {"яблоко": "желтое"}, {"яблоко": "черное"}, {"яблоко": "синие"}, {"груша": "черное"}, {"груша": "белое"}, {"груша": "желтое"}, {"груша": "синие"}, {"груша": "желтое"}, {"апельсин": "черное"}, {"апельсин": "белое"}, {"апельсин": "желтое"}, {"апельсин": "белое"}]
 
for el in lst:
    for key in el.keys():
        if key not in All.keys(): All[key] = [el[key]]
        else: All[key].append(el[key])
в словаре All лежит результат. Не проверял код, мог опечататься где-то.

Добавлено через 2 минуты
Ну и надо очистить от лишнего потом значения, надеюсь, проблемой удаление дубликатов списка не станет
2
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
24.11.2022, 17:41
Лучший ответ Сообщение было отмечено denjamin11 как решение

Решение

denjamin11, Возможно можно как-то короче.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
elements = [
    {"яблоко": "черное"}, {"яблоко": "белое"}, {"яблоко": "желтое"}, {"яблоко": "черное"}, {"яблоко": "синие"},
    {"груша": "черное"}, {"груша": "белое"}, {"груша": "желтое"}, {"груша": "синие"}, {"груша": "желтое"},
    {"апельсин": "черное"}, {"апельсин": "белое"}, {"апельсин": "желтое"}, {"апельсин": "белое"}
]
 
results = []
for element in elements:
    for element_key, element_value in element.items():
        for result in results:
            if element_key in result.keys():
                if element_value not in result[element_key]:
                    result[element_key].append(element_value)
                break
        else:
            results.append({element_key: [element_value]})
            
print(results)
Code
1
2
3
4
5
[{'яблоко': ['черное', 'белое', 'желтое', 'синие']}, {'груша': ['черное', 'белое', 'желтое', 'синие']}, {'апельсин': ['черное', 'белое', 'желтое']}]
 
 
** Process exited - Return Code: 0 **
Press Enter to exit terminal
Добавлено через 2 часа 18 минут
denjamin11, Еще один вариант. По сути ничего особо не поменялось. Просто немного меньше вложенность кода и не сохранен порядок.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
elements = [
    {"яблоко": "черное"}, {"яблоко": "белое"}, {"яблоко": "желтое"}, {"яблоко": "черное"}, {"яблоко": "синие"},
    {"груша": "черное"}, {"груша": "белое"}, {"груша": "желтое"}, {"груша": "синие"}, {"груша": "желтое"},
    {"апельсин": "черное"}, {"апельсин": "белое"}, {"апельсин": "желтое"}, {"апельсин": "белое"}
]
 
result = {key: set() for key in {key for element in elements for key in element}}
for element in elements:
    for key, value in element.items():
        result[key].add(value)
result = [{key: [*value]} for key, value in result.items()]
 
print(result)
Code
1
2
3
4
5
[{'груша': ['белое', 'желтое', 'черное', 'синие']}, {'апельсин': ['белое', 'желтое', 'черное']}, {'яблоко': ['белое', 'желтое', 'черное', 'синие']}]
 
 
** Process exited - Return Code: 0 **
Press Enter to exit terminal
1
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 138
25.11.2022, 06:16  [ТС]
Спасибо Всем большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2022, 06:16
Помогаю со студенческими работами здесь

Цифровая сортировка списка по составному ключу
Здравствуйте. Почему то при цифровой сортировке пропадает часть данных. Не могу найти куда и почему(( Предполагаю что они просто не...

Цифровая сортировка односвязного списка по ключу
Помогите, пожалуйста, написать функцию для цифровой сортировки списка по полю name(фамилия). Ключ - первые три буквы фамилии. #include...

Цифровая сортировка односвязного списка по ключу
Помогите, пожалуйста, написать функцию для цифровой сортировки списка по полю name(фамилия). Ключ - первые три буквы фамилии. #include...

Сортировка списка объектов по ключу(атрибуту) в алфавитном порядке
Как работает сортировка в javascript? Мне нужно отсортировать в алфавитном порядке по ключу Pair. let data = undefined ...

MyDictionary: сортировка по ключу, поиск значения по ключу, поиск ключа по значению
Задан интерфейс ІMyDictionary. Его реализует класс MyDictionary, который позволяет определить коллекцию пар "ключ-значение". ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru