Как сделать значение ''print(key + ':', info[num][key])'' и нового словаря одинаковыми?
Необходимо , чтоб в новый словарь попадали такие же значения, как и при print(key + ':',info[num][key]).
Что сделал не так? Помогите исправить ошибку
info = {1 : {'name': 'Timur', 'job': 'Teacher'},
2 : {'name': 'Ruslan', 'job': 'Developer'},
3 : {'name': 'Rustam', 'job': 'Tester'}}
num = int(input("Какой номер ID? :"))
print('Employee ID:', num)
print()
new_w = {}
for key in info[num]:
print(key + ':', info[num][key])
print()
for s in info.values():
new_w.update(**s)
print(new_w)
Вывод:
Какой номер ID? :1
Employee ID: 1
name: Timur
job: Teacher
{'name': 'Rustam', 'job': 'Tester'}
Ответы (1 шт):
Автор решения: Andy Pavlov
→ Ссылка
Вы в цикле for s in info.values(): перебираете все значения словаря info, подставляя их в new_w.update(**s). В результате у Вас в new_w будет всегда значение последнего ключа info.
Вместо
for s in info.values():
new_w.update(**s)
нужно использовать тогда
new_w.update(info[num])
или вообще
new_w = info[num]
Тогда код будет примерно таким:
info = {1 : {'name': 'Timur', 'job': 'Teacher'},
2 : {'name': 'Ruslan', 'job': 'Developer'},
3 : {'name': 'Rustam', 'job': 'Tester'}}
num = int(input("Какой номер ID? :"))
print('Employee ID:', num)
for key in info[num]:
print(key + ':', info[num][key])
new_w = {}
new_w.update(info[num])
print(new_w)
Вывод:
Какой номер ID? :1
Employee ID: 1
name: Timur
job: Teacher
{'name': 'Timur', 'job': 'Teacher'}