Как сделать значение ''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'}
→ Ссылка