我有以下字典:
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
答案 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']
找到的值。