← Назад к вопросам

Как достать все значения из словаря в Python?

1.3 Junior🔥 181 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Способы получения значений из словаря

В Python есть несколько способов извлечь все значения из словаря, каждый с собственными особенностями и применением.

1. Метод dict.values() — базовый способ

Самый простой и прямолинейный способ. Возвращает dict_values — представление всех значений:

my_dict = {"name": "John", "age": 30, "city": "New York"}

# Получить все значения
values = my_dict.values()
print(values)  # dict_values(['John', 30, 'New York'])
print(type(values))  # <class 'dict_values'>

# Преобразовать в список
values_list = list(my_dict.values())
print(values_list)  # ['John', 30, 'New York']

# Итерация
for value in my_dict.values():
    print(value)

2. Преобразование в список для удобства

Часто нужна работа со списком, а не с представлением dict_values:

my_dict = {"product_1": 100, "product_2": 200, "product_3": 150}

# Преобразование в список
prices = list(my_dict.values())
print(prices)  # [100, 200, 150]

# Теперь можно использовать стандартные операции списка
print(max(prices))  # 200
print(sum(prices))  # 450
print(len(prices))  # 3

3. Распаковка значений

Для распределения значений по переменным (если количество известно):

config = {"host": "localhost", "port": 8000, "debug": True}

# Распаковка
host, port, debug = config.values()
print(f"Сервер: {host}:{port}, Debug: {debug}")

# Распаковка с пропусками
my_dict = {"a": 1, "b": 2, "c": 3, "d": 4}
a, *rest = my_dict.values()
print(f"Первый: {a}, Остальные: {rest}")  # Первый: 1, Остальные: [2, 3, 4]

4. Фильтрация значений

Используй list comprehension для выбора определённых значений:

students = {"John": 85, "Jane": 92, "Bob": 78, "Alice": 88}

# Только оценки выше 80
good_grades = [grade for grade in students.values() if grade >= 80]
print(good_grades)  # [85, 92, 88]

# Значения только для определённых ключей
selected = [students[k] for k in ["John", "Jane"]]
print(selected)  # [85, 92]

5. Использование распаковки оператора *

dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}

# Объединение значений из нескольких словарей
all_values = [*dict1.values(), *dict2.values()]
print(all_values)  # [1, 2, 3, 4]

6. Вложенные словари — рекурсивное извлечение

Для работы с многоуровневыми структурами:

data = {
    "user1": {"name": "John", "age": 30},
    "user2": {"name": "Jane", "age": 28}
}

# Получить все значения на всех уровнях
def get_all_values(obj):
    """Рекурсивно извлечь все значения из словаря"""
    if isinstance(obj, dict):
        for value in obj.values():
            yield from get_all_values(value)
    elif isinstance(obj, (list, tuple)):
        for item in obj:
            yield from get_all_values(item)
    else:
        yield obj

all_vals = list(get_all_values(data))
print(all_vals)  # ['John', 30, 'Jane', 28]

7. Преобразование в другие структуры

my_dict = {"x": 10, "y": 20, "z": 30}

# В кортеж
values_tuple = tuple(my_dict.values())
print(values_tuple)  # (10, 20, 30)

# В множество
values_set = set(my_dict.values())
print(values_set)  # {10, 20, 30}

# С сохранением порядка (в Python 3.7+ порядок сохраняется)
values = list(my_dict.values())
print(values)  # [10, 20, 30]

Итог

  • dict.values() — встроенный способ, возвращает представление
  • list(dict.values()) — когда нужен список
  • List comprehension — для фильтрации и трансформации
  • Рекурсивные функции — для вложенных структур
  • dict.values() ленивое — не создаёт копию сразу (экономит память)