2016-03-29 15 views
0

Daha küçük bir iç içe Dict (en sonunda bir istekte bir yük olacak) koymak için daha büyük bir sözlükten verileri ayıklayabilen bir işlev yazmaya çalışıyorum. Yük taşıma kipi yapısını Yok ve varsayılan değerleri info_json'dan doldurulacak verilerle koydum. Ancak bir hata "sözlük yineleme sırasında boyutu değişti" olsunpython 1 düz dict veri iç içe bir dict ayıklamak için

def extract_payload(self, info_json): 
     info_dict = json.loads(info_json) 
     payload = {"service": None, "current": None, 
        "product1": {"id": None, "id2": None, 
             "name": None, 
             "method": "constant_value"}, 
        "product2": {"id": None, "id2": None, 
               "name": None, 
               "method": None, "always_false": False}, 
        "usage": {"usage1": None, "usage2": None, "usage3": None, 
            "usage4": 2066} 

     for key,value in payload.items(): 
      if value is not None: 
       for sub_key in value: 
        value = info_dict.get(sub_key) 
        payload['sub_key'] = value 
      else: 
       value = info_dict.get(key) 
       payload['key'] = value 
     return payload 

cevap

1

yük sonunda bir kayıp } yoktur. Her döngü için aynı anda yük ['sub_key'] üzerine yazıyorsunuz, olması gerekiyor, else payload[key] = value

için de aynı
İlgili konular