从字典中删除密钥时,Python中的KeyError,但密钥存在

时间:2016-02-11 18:39:19

标签: python keyerror

我正在尝试使用另一个键中的值从字典中删除键。密钥存在,它表示当我输入value in dict.keys()时它存在,但是当我尝试删除它时我得到了keyerror。

def remove_duplicate_length(choices):
    print choices
    print choices['scheme']
    print type(choices['scheme'])
    print choices['scheme'] in choices.keys()
    print 'AABB' in choices.keys()
    scheme = choices['scheme']
    print type(scheme)
    del choices[scheme]

打印出来:

{'ABAB': '2', 'AABB': '6', 'scheme': 'AABB', 'authors': ['Bukowski']}
AABB
<type 'str'>
True
True
<type 'str'>
None

在尝试引用return语句的结果时提供TypeError: 'NoneType' object has no attribute '__getitem__',或在尝试直接打印结果时提供keyerror: AABB

我打印的结果如下:

@route('/', method='POST')
def getUserChoice():
    user_selection = parse_data(request.body.read())
    print user_selection

1 个答案:

答案 0 :(得分:0)

Python dict有一个非常有效的方法get。假设您的词典可能有或没有密钥。您可以使用get来检索密钥或其他内容,然后您可以检查结果是否满足您的条件。

>>> mydict = {'name': 'Jhon', 'age': 2}
>>> mydict.get('name')
Jhon
>>> mydict.get('lastname', 'Not found')
Not found

在您的方法中,您可以检查密钥是否存在,然后将其删除。

...
scheme = choices.get('scheme', None)
print type(scheme)
if scheme:
    del choices[scheme]