Как получить доступ к вложенному словарю с помощью кортежа

У меня есть вложенный словарь, к которому я хочу получить доступ через кортеж. Как это сделать?

    my_dict = {
            "1": { "a": "hi", "b": "bye" },
            "2": { "a": { "i": "howdy"}}
            }

# Way 1: Works
my_dict["1"]["b"] # prints "bye"
my_dict["2"]["a"]["i"] # prints "howdy"

# Way 2: Doesn't Work
my_dict[("1", "b")] # fails
my_dict(("2", "a", "i")) # fails

🤔 А знаете ли вы, что...
В Python есть инструменты для создания графиков и визуализации данных, такие как библиотеки Matplotlib и Seaborn.


52
1

Ответ:

Решено

Для этого вы можете создать вспомогательную функцию (назовем ее nested_get).

my_dict = {"1": {"a": "hi", "b": "bye"}, "2": {"a": {"i": "howdy"}}}

from functools import reduce


def nested_get(dictionary, keys):
    return reduce(lambda a, x: a[x], keys, dictionary)


assert nested_get(my_dict, ("1", "b")) == "bye"
assert nested_get(my_dict, ("2", "a", "i")) == "howdy"