通过python 3中的引用更新嵌套键的值

时间:2019-05-23 18:01:49

标签: python json dictionary flask

我有以下字典:

  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和flask

1 个答案:

答案 0 :(得分:0)

当您使用类似

的内容遍历字典时
my_dictionary = { 'hello' : ['I', 'am', 'a', 'dictionary'] }

for entry in my_dictionary:
    print entry

输出将为hello,因为默认情况下它通过其键进行迭代。看来,您实际上是想要遍历字典的值,您将要调用values()函数或Python2中的itervalues()

除此之外,您还遇到了生成器理解的if语句的问题。届时,您的a变量将保存一个字典列表-以前是watch_list['videos']找到的值。