простая python рекурсивная программа - PullRequest
0 голосов
/ 30 января 2020

вот мой python код, довольно простая программа, но я потерпел неудачу, спасибо большое

def a(field, dict_data):
    key = field.split('.')
    if len(key) == 1:
        return dict_data[key[0]]
    a(".".join(key[1: len(key)]), dict_data[key[0]])


if __name__ == "__main__":
    d = dict({'a': dict({'b': dict({'c': dict({'d': "hello!"})})})})
    print(a("a.b.c.d", d))

мой ожидаемый результат

'hello!'

но я получил

'None'

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Если вы хотите использовать для l oop, попробуйте:

def a(field, dict_data):

  keys_list = field.split('.')
  for i,key in enumerate(keys_list):

    if key in dict_data.keys():
      dict_data=dict_data[key]

    if i == len(keys_list) - 1:
      print(dict_data) #return dict_data


0 голосов
/ 30 января 2020

Вам необходимо вернуть значение, возвращаемое из рекурсии

return a(".".join(key[1: len(key)]), dict_data[key[0]])

В настоящее время ничего не возвращается, поэтому вы получаете None.

...