Обновление значения вложенного ключа по ссылке в Python 3 - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующий словарь:

  watch_list=  {'videos': [{'systemId': 'qre', 'duration': 19}, {'systemId': 'abc', 'duration': 19}]}

Теперь я хотел проверить, существует ли systemId в словаре, и если да, то обновить продолжительность по systemId.

, следовательно, я пытаюсьследующий код:

def update_duration(watch_list,system_id,duration):
watch_history= next((a for a in watch_list if a['systemId'] == system_id), None)
if watch_history:
    watch_history['duration'] =duration
    return watch_history

но это дает мне ошибку:

*** TypeError: string indices must be integers

Я новичок в Python, я прочитал переполнение стека других решений, но не смог заставить его работать.Может кто-нибудь помочь мне немного здесь, о том, как обновить значение по systemId?

Я использую Python 3 и колбу

1 Ответ

0 голосов
/ 23 мая 2019

Когда вы перебираете словарь с чем-то вроде

my_dictionary = { 'hello' : ['I', 'am', 'a', 'dictionary'] }

for entry in my_dictionary:
    print entry

Вывод будет hello, так как он перебирает свои ключи по умолчанию.Похоже, что вы действительно хотите перебрать значения словаря, вам нужно вызвать функцию values() или itervalues() в Python2.

Помимо этого, вы столкнетесь спроблема с оператором if вашего понимания понимания.В этот момент ваша переменная a содержит список словарей - то, что раньше было значением, найденным watch_list['videos'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...