Гид по технологиям

Преобразование словаря Python в список

4 min read Python Обновлено 05 Dec 2025
Словарь Python в список — способы и примеры
Словарь Python в список — способы и примеры

Фрагмент кода Python на экране телефона

TL;DR

Ключи и значения словаря легко превратить в вложенный или «плоский» список в Python: используйте обычный for, list comprehension, map/zip или itertools. Выбор метода зависит от желаемой структуры (кортежи, списки, плоская последовательность) и от особенностей данных (вложенные структуры, порядок, неизменяемость).

Зачем это нужно

Преобразование словаря в список полезно при сериализации, передаче данных в API, подготовке к обработке в циклах, сравнении пар ключ–значение или при создании таблиц/CSV. Словарь в Python представляет собой набор пар “ключ: значение” — это удобная структура для поиска по ключам, но многие алгоритмы и форматы ожидают именно списки.

Важно: начиная с Python 3.7 словари сохраняют порядок вставки, поэтому результат преобразования будет детерминирован при одинаковой вставке элементов.

Преобразование с помощью цикла for

Один из самых явных и читаемых подходов — пройтись по словарю в цикле и собирать пары.

myDictionary = {"A": "Python", "B": "JavaScript", "C": "Node"}
convertedList = []

for key in myDictionary:
    convertedList.append([key, myDictionary[key]])

print(convertedList)
# Вывод: [['A', 'Python'], ['B', 'JavaScript'], ['C', 'Node']]

То же самое можно записать с распаковкой items():

convertedList = []
for key, value in myDictionary.items():
    convertedList.append([key, value])

Или компактно через list comprehension:

convertedList = [[k, v] for k, v in myDictionary.items()]

Если вам нужны кортежи вместо списков, замените [] на (). Для множеств используйте { }, но помните: элементы множества должны быть хэшируемыми, и множества не сохраняют порядок.

Функция: получить «плоский» список

Если нужно не [[k, v], …], а [k, v, k2, v2, …], используйте extend() внутри цикла:

def convert_to_flat_list(dct):
    flat = []
    for key, value in dct.items():
        flat.extend([key, value])
    return flat

print(convert_to_flat_list(myDictionary))
# Вывод: ['A', 'Python', 'B', 'JavaScript', 'C', 'Node']

Альтернативно, можно использовать list comprehension с itertools:

import itertools
flat = list(itertools.chain.from_iterable([[k, v] for k, v in myDictionary.items()]))

Однострочные встроенные функции: zip и map

zip и map дают удобные варианты:

  • zip создаёт вложенный список кортежей (ключ, значение):
converted = list(zip(myDictionary.keys(), myDictionary.values()))
# [('A', 'Python'), ('B', 'JavaScript'), ('C', 'Node')]
  • map с приведением к list выдаёт список списков:
converted = list(map(list, myDictionary.items()))
# [['A', 'Python'], ['B', 'JavaScript'], ['C', 'Node']]

Выбирайте zip, если важен порядок соответствия ключей и значений и вы хотите кортежи; map часто короче и выразительнее, если вам нужны списки пар.

Когда подход не подходит / примеры ошибок

  • Если значения нередко вложенные структуры (списки, словари), простое flatten может потерять смысл: как интерпретировать вложенные словари как последовательность?
  • Преобразование в set не работает, если значения не хэшируемы (например, списки) — будет TypeError.
  • Равнозначность пар при последующем восстановлении словаря: плоский список [k, v, k2, v2] вернёт словарь только при условии уникальности ключей и чётного числа элементов.

Альтернативные подходы и полезные приёмы

  • itertools.chain.from_iterable для плоского списка (см. выше).
  • sum([[k, v] for k, v in d.items()], []) — короткий трюк, но неэффективен для больших словарей (создаёт много временных списков).
  • collections.OrderedDict для явного контроля порядка в старых версиях Python (до 3.7).
  • Pandas: если цель — таблица/CSV, используйте pandas.DataFrame.from_dict(d, orient=’index’/‘columns’).

Модель мышления (интуиция)

Думайте о словаре как о наборе пар (key ↔ value). Преобразование в список — это упаковка этих пар в последовательность. Есть два базовых формата:

  • вложенный: каждая пара — отдельный контейнер ([[k,v], [k2,v2], …]); удобен для итерации по парам;
  • плоский: все элементы подряд ([k, v, k2, v2, …]); удобен для вывода или простого CSV-представления.

Сравнение подходов

МетодРезультатПорядокПримечания
for + append[[k,v], …]сохраняетсяявный, легко читать
list comprehension[[k,v], …]сохраняетсякомпактно
zip(keys, values)[(k,v), …]сохраняетсякортежи, быстрее при простоте
map(list, items)[[k,v], …]сохраняетсяфункциональный стиль
itertools.chain[k,v,k2,v2,…]сохраняетсяудобно для плоской последовательности

Контроль качества: чек-лист для разработчика

  • Проверить, что ключи хэшируемы (если будете помещать в set).
  • Решить формат: вложенный список или плоский.
  • Убедиться, что порядок важен и использовать Python 3.7+ или OrderedDict.
  • Обработать вложенные структуры отдельно (рекурсивная сериализация).
  • Написать тесты: пустой словарь, одиночная пара, ключи/значения разного типа.

Краткий глоссарий

  • key: одно из уникальных полей в словаре, по которому ищут значение.
  • value: данные, связанные с ключом.
  • items(): метод словаря, возвращает пары (key, value).
  • flatten: преобразование вложенной структуры в плоскую последовательность.

Примеры тестовых случаев

  • {} -> [] или [] в зависимости от формата.
  • {“a”: 1} -> [[“a”,1]] и [“a”, 1] для плоского.
  • Словарь с неупорядоченной вставкой (в старых версиях Python) — ожидайте непредсказуемого порядка.

Итог

Преобразование словаря в список в Python — тривиальная задача с множеством вариантов. Выбирайте метод в зависимости от требуемой структуры, эффективности и ограничений данных. Для большинства задач хватает list(dict.items()), list(map(list,…)) или простой list comprehension.

Краткие рекомендации: используйте list(dict.items()) для пары в кортеже, map(list, …) или comprehension для списка пар, itertools.chain для плоской последовательности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как узнать IP-адрес в Windows 10
Сеть

Как узнать IP-адрес в Windows 10

Видеозадний фон в Microsoft Edge — включение и отключение
Руководства

Видеозадний фон в Microsoft Edge — включение и отключение

Исправление ошибки 0x800070002c-0x3000d в Windows 10
Windows

Исправление ошибки 0x800070002c-0x3000d в Windows 10

Cider — клиент Apple Music для Linux
Linux

Cider — клиент Apple Music для Linux

Как использовать FC в командной строке Windows
Командная строка

Как использовать FC в командной строке Windows

Как защитить Wi‑Fi от соседей
Сеть

Как защитить Wi‑Fi от соседей