Доступ к значению словаря на основе списка ключей - PullRequest
1 голос
/ 06 мая 2019

У меня есть вложенный словарь с ключами и значениями, как показано ниже.

   j = {
         "app": {
                   "id": 0,
                   "status": "valid",  
                   "Garden": {
                                "Flowers": 
                                {
                                "id": "1",                                
                                "state": "fresh"
                                },
                                 "Soil": 
                                {
                                "id": "2",                                
                                "state": "stale"
                                }
                             },

                    "BackYard": 
                           {
                                "Grass": 
                                {
                                "id": "3",                                
                                "state": "dry"
                                },
                                 "Soil": 
                                {
                                "id": "4",                                
                                "state": "stale"
                                }
                           }
                  }
         }

В настоящее время у меня есть метод python, который возвращает мне маршрут, основанный на ключах, чтобы получить «значение».Например, если я хочу получить доступ к значению «1», метод python вернет мне список строк с маршрутом ключей, чтобы добраться до «1».Таким образом, это вернуло бы меня, ["app","Garden", "Flowers"]

Я проектирую сервис, используя флешку, и я хочу иметь возможность возвращать вывод json, такой как следующий, основанный на маршруте ключей.Таким образом, я бы возвратил вывод, такой как ниже.

      {
         "id": "1",                                
         "state": "fresh"
      }

Проблема:

Я не уверен в том, как вывести результат, как показано выше, так как мне нужно будет проанализировать словарь "j "чтобы его построить?Я попробовал что-то вроде следующего.

def build_dictionary(key_chain):
    d_temp = list(d.keys())[0]
   ...unsure on how to 

#Here key_chain contains the ["app","Garden", "Flowers"] sent to from the method which parses the dictionary to store the key route to the value, in this case "1".

Может кто-нибудь помочь мне построить словарь, который я отправлю методу jsonify.Любая помощь будет оценена.

1 Ответ

1 голос
/ 07 мая 2019

Надеюсь, это то, что вы спрашиваете:

def build_dictionary(key_chain, j):
    for k in key_chain:
        j = j.get(k)
    return j


kchain = ["app","Garden", "Flowers"]

>>> build_dictionary(kchain, j) 
{'id': '1', 'state': 'fresh'}
...