我无法正确评估一组数据。我有一组带有编号键的JSON数据。我的目标是评估所有值并将它们随时间增加到相同的值。
例:
py脚本每小时运行一次。
(1)查看JSON数据:
{
"1": 100,
"10": 75,
"2": 100,
"3": 100,
"4": 100,
"5": 100,
"6": 100,
"7": 100,
"8": 100,
"9": 100
}
(2)确定键“10”与其余键不相等 (3)增加键#10的值+1到76
此过程应每小时重复一次。 当评估发现所有值都相等时,它应该将密钥#1的值增加+1到101。 在下次运行时,它应该将键#2递增+1,然后每次运行,直到它们再次相等。
我已经可以使用JSON数据打印出来,选择某些值,更新等等。我的麻烦是试图弄清楚如何正确评估数据。什么样的,如果那么,等等循环或我应该做什么来实现我的目标。
答案 0 :(得分:1)
你基本上找到的第一个值是 lower 而不是前面的元素:
import json
data = json.loads(json_string)
first = data['1']
for key in sorted(data):
if data[key] < first:
data[key] += 1
break
else:
data['1'] += 1
json_string = json.dumps(data)
这会使遇到的第一个值增加,该值低于与data['1']
相关联的值。如果没有这样的值,则data['1']
会递增。
请注意,您也可以将其设为JSON 列表:
json_string = "[100, 100, 100, 100, 100, 100, 100, 100, 100, 75]"
,代码变为:
first = data[0]
for i, val in enumerate(data[1:]):
if val < first:
data[i] += 1
break
else:
data[0] += 1
答案 1 :(得分:0)
data ={
"1": 100,
"10": 75,
"2": 100,
"3": 100,
"4": 100,
"5": 100,
"6": 100,
"7": 100,
"8": 100,
"9": 100
}
import time
n = 1
while True:
if data["10"] < data["9"]: # if 9 is greater we need to increase 10, reset n
data["10"] += 1
n = 1
time.sleep(3600) # sleep for an hour
else:
data[str(n)] += 1
time.sleep(3600)
n += 1
continue