使用字典的子字典中的值创建新键

时间:2017-03-26 04:53:21

标签: python dictionary for-loop data-structures

你好我有一本字典:

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}
             }

我的目标是创建一个名为

的新密钥

' german_cars'

其中包括键的总和' bmw'和'奔驰'

我想要新创建的密钥' german_cars'在' my_dictionary'内像这样:

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}
             }

我想知道使用for循环执行此操作的自动方式。非常感谢帮助知道如何实现这一目标。

先谢谢了。

2 个答案:

答案 0 :(得分: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

结果

{'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}}

答案 1 :(得分:0)

您可以遍历外部字典,然后直接修改内部字典:

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

FWIW,我使用dict.get()所以如果“bmw”或“benz”缺失,查找不会失败。