首页 > 解决方案 > python更新列表中字典的每个键值

问题描述

我在列表中有一个字典,我正在尝试迭代列表并更新字典键,每隔 10 秒更新一次值。

例子:

list = [{"id": 3, "status": "pending"}, {"id": 4, "status": "pending"}, {"id": 2, "status": "pending"}]

在某种情况下,我有另一个global_status = executing or blocked or completed基于global_status的变量

if (global_status == executing ):
        output : [{"id": 3, "status": "routing"}, {"id": 4, "status": "pending"}, {"id": 2, "status": "pending"}]
    wait for 10 seconds
        output : [{"id": 3, "status": "completed"}, {"id": 4, "status": "routing"}, {"id": 2, "status": "pending"}]
    wait for 10 seconds
        output : [{"id": 3, "status": "completed"}, {"id": 4, "status": "completed"}, {"id": 2, "status": "completed"}]

在这里,我正在遍历列表,等待 10 秒。基于global_status,更新键,每个字典的值以顺序的方式分开。

标签: pythonlistdictionary

解决方案


我为您的代码做了两个修复。

第一:你必须有固定的模式才能使用 for 循环。我为你做了一个示例模式。

routing     pending     pending
completed   pending     pending

completed   routing     pending
completed   completed   pending

completed   completed   routing
completed   completed   completed

第二:您必须使用两个 for 循环来更改每个字典中的每个“状态”,否则它将更改所有这些状态。

import time
List = [{"id": 3, "status": "pending"}, {"id": 4, "status": "pending"}, {"id": 2, 
"status": "pending"}]
count = ['routing', 'completed'] # this is for your status

for i in List:
    for j in range(len(i)):
        i['status'] = count[j]
        print(List)
        time.sleep(10)

推荐阅读