辞書

2017-03-26 6 views
1

のサブディクショナリ内の値を持つ新しいキーを作成するこんにちは、私は辞書を持っている:辞書

「がgerman_cars」

my_dictionary = {'Kyle': {'benz':2, 'ford':1, 'bmw':5, 'gmc':6, 'subaru':3} 
       'Jim': {'benz':5, 'ford':9, 'bmw':3, 'gmc':1, 'subaru':2} 
       'Tom': {'benz':3, 'ford':4, 'bmw':8, 'gmc':2, 'subaru':10} 
       'Eric: {'benz':6, 'ford':7, 'bmw':9, 'gmc':5, 'subaru':3} 
      } 

私の目標はと呼ばれる新しいキーを作成することですこれは、キー 'bmw'と 'ベンツ'の合計をとります。

私はこのような「my_dictionary」内の新しく作成されたキー「german_cars」を持つようにしたい:

my_dictionary = {'Kyle': {'benz':2, 'ford':1, 'bmw':5, 'gmc':6, 'subaru':3, 'german_cars':7} 
       'Jim': {'benz':5, 'ford':9, 'bmw':3, 'gmc':1, 'subaru':2, 'german_cars':8} 
       'Tom': {'benz':3, 'ford':4, 'bmw':8, 'gmc':2, 'subaru':10, 'german_cars':11} 
       'Eric: {'benz':6, 'ford':7, 'bmw':9, 'gmc':5, 'subaru':3, 'german_cars':15} 
      } 

私はループに使用してこれを行う自動化された方法を知っていただきたいと思います。これを達成する方法を知るために、大いに助けになるでしょう。

ありがとうございました。

答えて

1
my_dict = {'Kyle': {'benz':2, 'ford':1, 'bmw':5, 'gmc':6, 'subaru':3}, 
       'Jim': {'benz':5, 'ford':9, 'bmw':3, 'gmc':1, 'subaru':2}, 
       'Tom': {'benz':3, 'ford':4, 'bmw':8, 'gmc':2, 'subaru':10}, 
       'Eric': {'benz':6, 'ford':7, 'bmw':9, 'gmc':5, 'subaru':3} 
      } 
for k,v in my_dict.items(): 
    v['german_cars'] = v['bmw']+v['benz'] 

あなたもこの

{k:v.update({'german_cars':v['bmw']+v['benz']}) for k,v in my_dict.items()} 

両方のような辞書内包表記は同じ結果を得ることができます。

print my_dict 

あなたはアウター辞書をループをすることができ、その後、直接内部dicts変更

{'Eric': {'benz': 6, 
      'bmw': 9, 
      'ford': 7, 
      'german_cars': 15, 
      'gmc': 5, 
      'subaru': 3}, 
'Jim': {'benz': 5, 
     'bmw': 3, 
     'ford': 9, 
     'german_cars': 8, 
     'gmc': 1, 
     'subaru': 2}, 
'Kyle': {'benz': 2, 
      'bmw': 5, 
      'ford': 1, 
      'german_cars': 7, 
      'gmc': 6, 
      'subaru': 3}, 
'Tom': {'benz': 3, 
     'bmw': 8, 
     'ford': 4, 
     'german_cars': 11, 
     'gmc': 2, 
     'subaru': 10}} 
+0

最初のforループメソッドを使用すると、エラーがスローされます。TypeError:サポートされていないオペランドタイプが+: 'int'と 'str' @ user1753919 –

+0

intとstrを合計しているようです。 int()関数を使用してstrをintに変換しようとします。 – plasmon360

+0

これは次のようになります:int(v ['benz '])...?@ user1753919 –

0

での結果:

for owner, cars in my_dictionary.items(): 
    cars['german_cars'] = cars.get('bmw', 0) + cars.get('benz', 0) 

FWIWを、私はあれば検索が失敗しないようにdict.get()を使用「bmw」または「benz」のいずれかが欠落していました。