@S10LI

Как получить данные из словаря в зависимости от ввода?

Допустим есть словарь

myDict = {
    'topKey1':{
        'subKey1':{
            'endKey1':{'key1':'value1'},
            'endKey2':{'key2':'value2'}
        },
        'subKey2':{
            'endKey1':{'key':'value1'},
            'endKey2':{'key':'value2'}
        }
    }
}


Что бы получить данные соответственно используется следующая конструкция

print(str(myDict['topKey1']['subKey1']['endKey1']['key1']))


Я хочу сделать так, чтобы когда с input получаю что то вроде этого например:

addr:topKey1/subKey1

То на выходе получал

print(str(myDict['topKey1']['subKey1']))

По сути я пытаюсь сделать файловый менеджер, но для словаря
Сейчас мой код примерно такой
if inputText.find('addr:') != -1:
    path =  inputText.split(':')[1]
    length = 1
    if path.find('/') != -1:
        length = len(path.split('/'))
    if length == 1:
        for k in myDict[path]:
            print(str(k))
    if length == 2:
        for k in myDict[path.split('/')[0]][path.split('/')[1]]:
            print(str(k))
    if length == 3:
        for k in myDict[path.split('/')[0]][path.split('/')[1]][path.split('/')[2]]:
            print(str(k))
...

Но словарь может быть из огромного количества вложенных словарей и я не могу прописать для каждой длины прибавление [path.split('/')[x]]

Грубо говорая
addr:topKey1
myDict['topKey1']

addr:addr:topKey1/subKey1
myDict['topKey1']['subKey1']

addr:addr:topKey1/subKey1/endKey1
myDict['topKey1']['subKey1']['endKey1']


Есть ли что-то, что может это автоматизировать? Может библиотека какая?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
longclaps
@longclaps
addr = 'topKey1/subKey1'
res = myDict
for key in addr.split('/'):
    res = res[key]
print(res)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы