2016-11-24 5 views
0
dictsの

だから私は入れ子にしているPythonのリストに辞書のネストされたPythonのリストを分割は2つの辞書

{"types": [{"name": "Chinese(Soups)", 
      "menu": [{"name": "Ya", "cost": 1}, {"name": "Ja", "cost": 2}]}, 

      {"name": "Chinese(Mains)", 
      "menu": [{"name": "Ta", "cost": 3}, {"name": "Ba", "cost": 4}]} 
      ] 
} 

注意すべきいくつかのものは、次のとおりです。

  • 新しい名前キーはキー内側と外側名の組み合わせです
  • キーがリストされ、1つの以上の要素を持つことができますので、答えが理想的である何その場合

の世話をする必要があります種類これに接近する最善の方法は?

答えて

2

本当にこのようにしたいとは思っていませんが、ここにいるのです。

{'types': [ 
    {'name': '%s(%s)' % (outer['name'], inner['name']), 
    'menu': inner['menu']} 
    for outer in original_dict['types'] 
    for inner in outer['sub']]} 

UPD:

original_dict['types'] = [ 
    {'name': '%s(%s)' % (outer['name'], inner['name']), 
    'menu': inner['menu']} 
    for outer in original_dict['types'] 
    for inner in outer['sub']] 
+0

これはを変更することによってこれを行うことが可能それaltogether..is新しい辞書を作成します:あなたは、元の辞書を更新することにしたい場合は、この方法はそれを行うことができます既存のdict? – Amistad

+0

@Amistad、新しい辞書で何が問題になっていますか?あなたは本当に正確に同じ辞書オブジェクトを修正する必要がありますか?個人的に私はここでのパフォーマンスやメモリの問題は気にせず、新しい辞書を既存の変数に割り当てます:original_dict = {'types':[... in original_dict ...]} –

+0

この問題は、私が解決しようとしている大きな問題のサブセットです。新しいものを作成せずに既存の辞書を修正することで、より大きな問題をより速く解決するのに役立ちます。 – Amistad

関連する問題