2017-08-30 1 views
0

動的に移入nDを辞書でまたは特別オファーなし、または3Gなし、白/黒であるのKindle考慮

Color: White 
Connectivity: Wi-Fi + Free 3G 
Offer Type: With Special Offers 
$127.49 

または白またはアーモンドである光スイッチ、1パックまたは10パック:

Color: White 
Size: 1 Pack 
$10.00 

さまざまな製品のさまざまなオプションの価格を保存したいと思います。スイッチの場合、それはのようなものになります。

product = { 
    'Color': 
     {'White': 
      {'Size': 
       {'1 Pack': 
        {'Price': '10.0'} 
      }, 
       {'10 Pack': 
        {'Price': '100.0'} 
      } 
     }, 
     'Almond': 
      {'Size': 
       {'1 Pack': 
        {'Price': '10.0'} 
      }, 
       {'10 Pack': 
        {'Price': '100.0'} 
      } 
     } 
     } 
    } 

を動的に選択肢の数が可変のためのオプションで値の辞書を移入するための最良の方法は何ですか?理想的にはデフォルト以外のライブラリを必要としないその他のソリューションこれまでのところ私の最高の推測では、

product = {} 
if len(options) == 3: 
    product.update({options[0]:{}}) 
    product[options[0]].update({options[1]:{}}) 
    product[options[0]][options[1]].update({options[2]:{'Price':price}}) 
... 

注...文があれば、それぞれの可能な長さを処理するの束である:私は「価格」キーが必要ではないことを理解しています。

答えて

0

私が必要とするものに十分近いものが見つかりました。以下のコードは正確には動作しないかもしれませんが、私のものにかなり近いです。

from pprint import pprint 

def set_nested(dic, value, *path): 
    for level in path[:-1]: 
     dic = dic.setdefault(level, {}) 

    dic[path[-1]] = value 

vals = [] 
for option in product_listing: 
    vals.append(get_option_name(option)) 
set_nested(costs, price, *vals) 
print costs 

{'Black': {'Wi-Fi + Free 3G': {'With Special Offers': 101.0, 
           'Without Special Offers': 209.99}, 
      'Wi-Fi Only': {'With Special Offers': 100.0, 
          'Without Special Offers': 100.0}}, 
'White': {'Wi-Fi + Free 3G': {'With Special Offers': 127.49, 
           'Without Special Offers': 209.99}, 
      'Wi-Fi Only': {'With Special Offers': 100.0, 
          'Without Special Offers': 139.99}}} 
関連する問題