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

2024-06-06 03:13:45 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我有一本字典:

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”和“benz”的总和。你知道吗

我想在“我的字典”中使用新创建的键“德语车”,如下所示:

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循环。如果你知道如何做到这一点,我们将不胜感激。你知道吗

提前谢谢。你知道吗


Tags: 目标dictionary字典mycarsgermanerickyle
2条回答

您可以在外部字典上循环,然后直接修改内部字典:

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

FWIW,我使用了dict.get(),所以如果“bmw”或“benz”丢失,查找不会失败。你知道吗

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

相关问题 更多 >