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

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

24.11.2022, 13:46. Показов 1415. Ответов 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
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru