Как объединить dict во вложенный dict в python с определенным форматом? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть словарь:

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 голосов
/ 18 мая 2018

Как я уже упоминал в комментариях, 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()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...