Поиск максимума в словаре, значениями которого являются списки, словари и списки словарей
Дано
Есть словарь, значениями которого являются списки, словари и списки словарей. Все ключи - str
. Все значения самого низкого уровня вложености - int
.
Для примера:
d = {
"key1": [3, 5, 6, 7, 15, 16],
"key2": {
"key3": 5,
"key4": 20,
"key5": 12
},
"key6": [
{"key7": 5, "key8": 10},
{"key7": 8, "key8": 10},
],
"key9": [1, 7, 4, 2,]
}
При этом количество значений каждого типа может быть произвольно любым.
Требуется
Надо найти максимум из всех значений.
Мое решение заключается в том, чтобы проходя по ключам проверять тип и далее получать значения способами подходящими для каждого типа, можно их, например, складывать в множество и потом взять максимум, вот типа того:
total_set = set()
for k in d:
if isinstance(d[k], list):
if isinstance(d[k][0], int | float):
total_set |= set(d[k])
else:
for vl in d[k]:
total_set |= set(vl.values())
else:
total_set |= set(d[k].values())
print(max(total_set))
А как-то не в лоб можно? Попроще?
Ответы (1 шт):
Автор решения: Munchen777
→ Ссылка
Есть еще вариант, который не займет памяти (по памяти будет O(1)
).
- Инициализируем переменную, например,
maximum = float("-inf")
. - Далее проходимся по всем значениям. Чтобы просматривать структуру в глубину, лучше подойдет рекурсия.