Я пытаюсь удалить ключ из словаря, используя значение из другого ключа. Ключ существует, он говорит, что существует, когда я набираю value in dict.keys()
, но я получаю сообщение об ошибке, когда пытаюсь его удалить.
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
И дает TypeError: 'NoneType' object has no attribute '__getitem__'
при попытке сослаться на результат оператора return или keyerror: AABB
при попытке напрямую распечатать результат.
Я печатаю результат следующим образом:
@route('/', method='POST')
def getUserChoice():
user_selection = parse_data(request.body.read())
print user_selection
None
потому чтоdel
не дает вам возвращаемый тип. Если вы проверитеchoices
, вы увидите, что этого ключа больше нет в словаре. - person karthikr   schedule 11.02.2016choices = remove_duplicate_length(choices)
? Ваша функция не возвращает dict. Он изменяет его по ссылке. - person Łukasz Rogalski   schedule 11.02.2016return
утверждении вы говорите? Python не возвращает неявно результат последней команды, как некоторые другие языки, и даже если бы это было так, операторdel
возвращает только None. - person Brendan Abel   schedule 11.02.2016