← Назад к вопросам
Как достать все значения из словаря в 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() ленивое — не создаёт копию сразу (экономит память)