Python 3.4.1查找不同的保持不变

时间:2014-08-26 19:37:19

标签: python json python-3.x

我无法正确评估一组数据。我有一组带有编号键的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数据打印出来,选择某些值,更新等等。我的麻烦是试图弄清楚如何正确评估数据。什么样的,如果那么,等等循环或我应该做什么来实现我的目标。

2 个答案:

答案 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