Как преобразовать список в словари?

Тут не поощряется публикация заданий без попытки самостоятельного решения.
В ответе тоже не буду давать вам готового решения, поскольку это «медвежья услуга».
Могу дать подсказку как решать вашу задачу.
Во-первых, следует отметить, что во втором, заблокированном вашем вопросе, формат входных данных отличается от озвученного здесь. Нужно тщательнее и аккуратнее приводить примеры.
Любую относительно сложную задачу нужно разбивать на блее простые подзадачи и решать их отдельно и изолированнно.
В данном случае входной список вам следует сначала разделить на набор отдельных списков, где в каждом первым элементом будет ваш идентификатор, а дальше список ключей и значений. Это можно оформить отдельной функцией. В том, втором вопросе было видно, что разделить входную последовательность можно, например, по значению ‘ID’. В примерах, приведённых здесь, нет такихэлементов, поэтому тут придётся ориентироваться на тип или четность.
Когда у вас будет последовательность списков, первый элемент — ключ всего списка, легко отделить слайсом, а весь хвост можно легко превратить в пары ключ-значение вот таким вот способом:
In [1]: lst=[1,2,3,4,5,6] In [2]: dict(zip(itr:=iter(lst), itr)) Out[2]:
Ну а если вы не сообразите, как увязать воедино все приведенные мной тут примеры, то вам еще рано решать такие задачи, нужно сделать пару шагов назад и осваивать базовые основы языка.
Преобразовать словарь в список
Напишите функцию, которая преобразовывает dict в список списков. Возвращаем пустой список, если словарь пустой.
Примеры:
to_list(< "a": 1, "b": 2 >) ➞ [["a", 1], ["b", 2]] to_list(< "shrimp": 15, "tots": 12 >) ➞ [["shrimp", 15], ["tots", 12]] to_list(<>) ➞ []
Посмотреть решение
def to_list(d): return sorted(list(i) for i in d.items())
def to_list(dct): list = [] for key,value in dct.items(): list.append([key,value]) list.sort() return list
Получение списка ключей из словаря в Python
Часто при работе со словарями в Python возникает необходимость получить список всех ключей этого словаря. Например, есть словарь, где каждому имени студента сопоставлена его оценка:
grades =
В Python 2.7 для получения списка ключей словаря можно было использовать метод keys() . Результатом его выполнения был список всех ключей:
print(grades.keys()) # Вывод: ['Иван', 'Мария', 'Алексей']
Однако, начиная с версии Python 3.3, поведение этого метода изменилось. Теперь он возвращает не список, а специальный объект dict_keys :
print(grades.keys()) # Вывод: dict_keys(['Иван', 'Мария', 'Алексей'])
Такой объект ведет себя похоже на список: его можно перебирать в цикле, проверять на вхождение элементов и так далее. Однако он не поддерживает некоторые операции, доступные для списков, например, индексацию.
Как получить список ключей словаря в Python 3?
Для получения списка ключей словаря в Python 3 нужно явно преобразовать объект dict_keys в список. Для этого можно использовать встроенную функцию list() .
grades = keys_list = list(grades.keys()) print(keys_list) # Вывод: ['Иван', 'Мария', 'Алексей']
Такой подход позволяет получить список ключей, с которым затем можно работать как с обычным списком, используя все доступные для него операции.
Преобразовать словарь словарей в словарь со списками на python
У меня есть словарь со словарями, который показывает наличие фруктов определенного цвета:
dict1 = < 'Apple': , 'Melon': , 'Orange': , 'Banana': >
его нужно преобразовать в словарь со списками такого формата:
list1 =
То есть ключи словаря — фрукты, а значение ключей — списки с наличием видов этого фрукта.
Отслеживать
3,504 6 6 золотых знаков 12 12 серебряных знаков 31 31 бронзовый знак
задан 29 авг 2023 в 10:47
93 6 6 бронзовых знаков
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
dict1 = < 'Apple': , 'Melon': , 'Orange': , 'Banana': > list1 = < k: [n for n, f in d.items() if f] or ['NO_FRUITS'] for k, d in dict1.items() >print(list1)
P.S. Зачем [‘NO_FRUITS’] ? Пустой список не будет удобнее?
Отслеживать
ответ дан 29 авг 2023 в 11:38
Stanislav Volodarskiy Stanislav Volodarskiy
31k 3 3 золотых знака 19 19 серебряных знаков 55 55 бронзовых знаков
Решил вашу проблему самым примитивным способом. Комментарии указал
from pprint import pprint dict1 = < 'Apple': , 'Melon': , 'Orange': , 'Banana': > list1 = dict() # Проходимся циклом по ключам словаря dict1 for fruit in dict1: # Создаем пустой список в новом словаре, чтобы добавлять туда фрукты в наличии list1[fruit] = [] # Проходимся циклом по всем видам фруктов for kind in dict1[fruit]: # Если продукт в наличии, добавляем в список по ключу искомого словаря if dict1[fruit][kind]: list1[fruit].append(kind) # Если после всех опреаций список остается пустым, отмечаем это добавлением строки "NO_FRUITS" if not list1[fruit]: list1[fruit].append("NO_FRUITS") pprint(list1)