程序中有几个语法错误和一个逻辑错误。在
逻辑错误是您使用sample_dict。你有for ...:
temp_dict = sample_dict.get(...)
应该是的
^{pr2}$
这是你的样品的固定版本。注意temp_dict在for循环中的使用。在sample_dict = {
'title': '',
'author': {'first_name': '', 'last_name': '', 'date_of_birth':''},
'publisher': {'publisher_name': '', 'contact_info': {'address': '
', 'email': ''}}}
publisher_email_path = 'publisher.contact_info.email'
temp_dict=sample_dict
for node in publisher_email_path.split('.'):
temp_dict = temp_dict.get(node)
print temp_dict # prints ''
temp_dict = sample_dict
for node in publisher_email_path.split('.')[:-1]:
temp_dict = temp_dict.get(node)
temp_dict['email'] = ' '
publisher_email_path = 'publisher.contact_info.email'
temp_dict=sample_dict
for node in publisher_email_path.split('.'):
temp_dict = temp_dict.get(node)
print temp_dict # prints ''
顺便说一下,您还可以使用reduce函数来表示for循环:publisher_email_path = 'publisher.contact_info.email'.split('.')
print reduce(dict.get, publisher_email_path, sample_dict)