Python - 创建索引时的KeyError

时间:2013-03-24 10:48:53

标签: python associative-array keyerror

这是代码(它在类中运行):

if profile['profile_picture']:
    profile['profile_picture_raw_path'], # Line 26
    profile['profile_picture_thumbnail'],
    profile['profile_picture'] = self.picture_path(profile['profile_picture'])

密钥不存在。 picture_path返回的典型结果是

('//domain.com/218971848/21924823397471f5e4e41a803da17f7c.jpg:large', '//domain.com/profile-images/218971848/21924823397471f5e4e41a803da17f7c.jpg:thumb-100', '//domain.com/profile-images/218971848/21924823397471f5e4e41a803da17f7c.jpg:exact')

如您所见,结果是3个元素的元组。

我收到了一个错误:

 File "/srv/rwt/production/application/rwt/profile.py", line 26, in load_profile
    profile['profile_picture_raw_path'],
KeyError: 'profile_picture_raw_path'

为什么会出现此错误?搜索了Stack Overflow的类似问题,但似乎有人问他们是否通过不存在的密钥访问字典值。

2 个答案:

答案 0 :(得分:4)

一行上的

profile['profile_picture_raw_path'],本身被解析为一个独立的表达式(尽管如此)。

您需要告诉Python解释器下一行是表达式的一部分:

profile['profile_picture_raw_path'], \
profile['profile_picture_thumbnail'], \
profile['profile_picture'] = self.picture_path(profile['profile_picture'])

答案 1 :(得分:1)

使用括号

if profile['profile_picture']:
    (profile['profile_picture_raw_path'], # Line 26
    profile['profile_picture_thumbnail'],
    profile['profile_picture']) = self.picture_path(profile['profile_picture'])