Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 8, 2011 16:56:57

greggyNapalm
От:
Зарегистрирован: 2011-09-08
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать "покрасоте"? JSON from dict or list

Добрый день всем. подскажите пожалуйста как наиболее лаконично и просто решить следующую задачу.
есть демон, который каждые 5s собирает числовые данные, сейча собирает в dict, можно сдлеать в list. Данные следующего вида:

{unixtime: value, unixtime: value, ...etc}
Пример:
{'1315488736': 0.17000000000000001, '1315488734': 0.17999999999999999, '1315488740': 0.14999999999999999, '1315488738': 0.17000000000000001}
Необходимо преобразовать к следующему виду:
{
"data": [
{"label":"1 min = ........", "data":[[1, 1], [2, 2], [3, 3], [4, 2], [5, 1], [6, 1], [7, 1], [8, 1], [9, 2], [10, 3], [11, 2], [12, 1], [13, 1], [14, 1]]},
{"label":"5 min = ........", "data":[[1, 1], [2, 1], [3, 2], [4, 1], [5, 1], [6, 1], [7, 1], [8, 1], [9, 1], [10, 2], [11, 3], [12, 2], [13, 1], [14, 1]]}
],
"ticks": {
"from": 1315414833147,
"to": 1315416933147
}
}
Где:
data":[[unixtime, value]
"from": first unixtime
"to": last unixtime
Силился сделать это при помощи библиотеки simplejson не выходит. Единсвенным вариантом, который вижу на данный момент - сибирать требуемый формат канкатинацией строк в цикле.

Есть идеи, господа?



Офлайн

#2 Сен. 8, 2011 18:35:21

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Как сделать "покрасоте"? JSON from dict or list

import time
import pprint
from datetime import datetime, timedelta

test_in = {'1315488736': 0.17000000000000001,
'1315488734': 0.17999999999999999,
'1315488740': 0.14999999999999999,
'1315488738': 0.17000000000000001}


def preprocess(input):

def get_time_slice(tup, period):
ts_start = tup[0][0]
ts_end = ts_start + period
slice = filter(lambda a: a[0] < ts_end, tup)
return map(lambda a: [time.mktime(a[0].timetuple()), a[1]], slice)

tup = list()
ksorted = sorted(input.keys())

ts_min = min(ksorted)
ts_max = max(ksorted)

for k in ksorted:
dt = datetime.fromtimestamp(float(k))
tup.append((dt, input[k]))

res = dict()

tmp = list()
for slice in (1, 5):
key = '%d_min' % slice
val = get_time_slice(tup, timedelta(minutes=slice))
tmp.append({key: val})
res['data'] = tmp
res['ticks'] = {'from': ts_min, 'to': ts_max}
return res

pprint.pprint(preprocess(test_in))
Как-то так )))

Офлайн

#3 Сен. 9, 2011 12:13:34

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать "покрасоте"? JSON from dict or list

прочитайте вначале про json формат и нарисуйте нормальную структуру, которая вам действительно нужна и с которой просто работать, сейчас у вас это все выглядить, аля симпотичненько, но функциональности в этом не видно



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version