Вы думаете о пробегаем по словарях неправильно, когда вы делаете -
for i in dict:
i
на самом деле ключ в словаре, а не значение. Пример -
>>> d = {1:2,3:4}
>>> for i in d:
... print(i)
...
1
3
Как вы можете видеть, он напечатал keys
не значения. Поэтому, если вам нужны ключи, а также значения, перейдите по iteritems()
(для Python 2.x) или items()
(для Python 3.x). Оба возвращают список кортежей, где первым элементом кортежа является ключ, а второй - значение.
Во-вторых, после этого, вы только получаете словари для каждого name
, а также age
отдельно, если вы хотите, чтобы получить их вместе, я предложил бы идти через ключи от одного из них и получать name
и age
используя что , Пример -
py_dict = {'age': {0: 10, 1: 30.0, 2: 19.0}, 'name': {0: u'Michael', 1: u'Andy', 2: u'Justin'}}
for key in py_dict['name']:
print "Name:",py_dict['name'][key]
print "Age:", py_dict['age'][key]
print
Пример/Demo -
>>> py_dict = {'age': {0: 10, 1: 30.0, 2: 19.0}, 'name': {0: u'Michael', 1: u'Andy', 2: u'Justin'}}
>>>
>>> for key in py_dict['name']:
... print "Name:",py_dict['name'][key]
... print "Age:", py_dict['age'][key]
... print
...
Name: Michael
Age: 10
Name: Andy
Age: 30.0
Name: Justin
Age: 19.0
Еще одно замечание, вы, кажется, использует Python 2.x
, в этом случае print
это утверждение, а не функция, если вы хотите функцию печати, вы нужно было бы сделать - from __future__ import print_function
. Но вы им действительно не нужны, используйте их в качестве утверждений, как я уже говорил выше.
Взгляните на этот раздел учебника - https://docs.python.org/3/tutorial/datastructures. html # looping-methods – wwii