如何使用特定格式将dict合并到python中的嵌套dict中?

时间:2018-05-18 15:16:09

标签: python python-3.x dictionary nested

我有一本字典:

digit = { 'one' : 1, 'two' : 2, 'three' : 3, 'four' : 4, 'five' : 5 }

我希望新的嵌套字典像这样:

new_dict = [{'eng':'one','math': 1}
            {'eng':'two','math': 2}
            {'eng':'three','math': 3}
            {'eng':'four','math': 4}
            {'eng':'five','math': 5}
           ]

我试过了:

digit = { 'one' : 1, 'two' : 2, 'three' : 3, 'four' : 4, 'five' : 5 }
new_dict={'eng':'','math':''}

for nest_key,nest_val in new_dict.items():
    for (key,value),(k,v) in nest_val.items(), digit.items():
        if nest_val['eng'] == '':
            nest_val.update({k:v})  
        nest_val.append({k:v})

print(new_dict)

给出了这个错误:

  for (key,value),(k,v) in nest_val.items(), digit.items():  
AttributeError: 'str' object has no attribute 'items'

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,nest_val实际上是一个字符串的值,并且没有items()方法。除此之外,您不必创建另一个字典并通过多个循环更新它。相反,您可以通过一个项目循环创建您想要的词典。

lst = []
for name, val in digit.items():
    lst.append({'eng': name,'math': val})

以更Pythonic的方式,您可以使用列表推导来拒绝在每次迭代时附加到列表中。

lst = [{'eng': name,'math': val} for name, val in digit.items()]