text = "[{'wartosc': '3.59', 'aktualizacja': '1519933403', 'nazwa': 'artekroom', 'nazwa_ui': 'Pokój Artura', 'id_punktu': 1, 'jakosc_sygnalu': None, 'czujnik': 'bat', 'jednostka': 'V', 'minimum': 0.0, 'maksimum': 5.0}, {'wartosc': '1020', 'aktualizacja': '1519584193', 'nazwa': 'artekroom', 'nazwa_ui': 'Pokój Artura', 'id_punktu': 1, 'jakosc_sygnalu': None, 'czujnik': 'press', 'jednostka': 'hPa', 'minimum': 0.0, 'maksimum': 1600.0}, {'wartosc': '21.2', 'aktualizacja': '1519576134', 'nazwa': 'artekroom', 'nazwa_ui': 'Pokój Artura', 'id_punktu': 1, 'jakosc_sygnalu': None, 'czujnik': 'temp', 'jednostka': '*C', 'minimum': -50.0, 'maksimum': 100.0}, {'wartosc': '23.8', 'aktualizacja': '1520020905', 'nazwa': 'testnode', 'nazwa_ui': 'Testowy', 'id_punktu': 15, 'jakosc_sygnalu': -75, 'czujnik': 'temp', 'jednostka': '*C', 'minimum': -50.0, 'maksimum': 100.0}, {'wartosc': '3.10', 'aktualizacja': '1520011249', 'nazwa': 'testnode', 'nazwa_ui': 'Testowy', 'id_punktu': 15, 'jakosc_sygnalu': -75, 'czujnik': 'bat', 'jednostka': 'V', 'minimum': 0.0, 'maksimum': 5.0}]"
# import json
# data = json.loads( text )
data = eval(text)
final_data = {}
for item in data:
d = {"czujnik": item["czujnik"],
"wartosc": item["wartosc"],
"maksimum": item["maksimum"],
"minimum": item["minimum"],
"aktualizacja": item["aktualizacja"],
"jednostka": item["jednostka"]}
if item['nazwa'] in final_data:
final_data[item['nazwa']]['readings'].append(d)
else:
final_data[item['nazwa']] = {
"id_punktu": item["id_punktu"],
"nazwa_ui": item["nazwa_ui"],
"readings": [d]
}
print(final_data['artekroom'])
dGV4dCA9ICJbeyd3YXJ0b3NjJzogJzMuNTknLCAnYWt0dWFsaXphY2phJzogJzE1MTk5MzM0MDMnLCAnbmF6d2EnOiAnYXJ0ZWtyb29tJywgJ25hendhX3VpJzogJ1Bva8OzaiBBcnR1cmEnLCAnaWRfcHVua3R1JzogMSwgJ2pha29zY19zeWduYWx1JzogTm9uZSwgJ2N6dWpuaWsnOiAnYmF0JywgJ2plZG5vc3RrYSc6ICdWJywgJ21pbmltdW0nOiAwLjAsICdtYWtzaW11bSc6IDUuMH0sIHsnd2FydG9zYyc6ICcxMDIwJywgJ2FrdHVhbGl6YWNqYSc6ICcxNTE5NTg0MTkzJywgJ25hendhJzogJ2FydGVrcm9vbScsICduYXp3YV91aSc6ICdQb2vDs2ogQXJ0dXJhJywgJ2lkX3B1bmt0dSc6IDEsICdqYWtvc2Nfc3lnbmFsdSc6IE5vbmUsICdjenVqbmlrJzogJ3ByZXNzJywgJ2plZG5vc3RrYSc6ICdoUGEnLCAnbWluaW11bSc6IDAuMCwgJ21ha3NpbXVtJzogMTYwMC4wfSwgeyd3YXJ0b3NjJzogJzIxLjInLCAnYWt0dWFsaXphY2phJzogJzE1MTk1NzYxMzQnLCAnbmF6d2EnOiAnYXJ0ZWtyb29tJywgJ25hendhX3VpJzogJ1Bva8OzaiBBcnR1cmEnLCAnaWRfcHVua3R1JzogMSwgJ2pha29zY19zeWduYWx1JzogTm9uZSwgJ2N6dWpuaWsnOiAndGVtcCcsICdqZWRub3N0a2EnOiAnKkMnLCAnbWluaW11bSc6IC01MC4wLCAnbWFrc2ltdW0nOiAxMDAuMH0sIHsnd2FydG9zYyc6ICcyMy44JywgJ2FrdHVhbGl6YWNqYSc6ICcxNTIwMDIwOTA1JywgJ25hendhJzogJ3Rlc3Rub2RlJywgJ25hendhX3VpJzogJ1Rlc3Rvd3knLCAnaWRfcHVua3R1JzogMTUsICdqYWtvc2Nfc3lnbmFsdSc6IC03NSwgJ2N6dWpuaWsnOiAndGVtcCcsICdqZWRub3N0a2EnOiAnKkMnLCAnbWluaW11bSc6IC01MC4wLCAnbWFrc2ltdW0nOiAxMDAuMH0sIHsnd2FydG9zYyc6ICczLjEwJywgJ2FrdHVhbGl6YWNqYSc6ICcxNTIwMDExMjQ5JywgJ25hendhJzogJ3Rlc3Rub2RlJywgJ25hendhX3VpJzogJ1Rlc3Rvd3knLCAnaWRfcHVua3R1JzogMTUsICdqYWtvc2Nfc3lnbmFsdSc6IC03NSwgJ2N6dWpuaWsnOiAnYmF0JywgJ2plZG5vc3RrYSc6ICdWJywgJ21pbmltdW0nOiAwLjAsICdtYWtzaW11bSc6IDUuMH1dIgoKIyBpbXBvcnQganNvbgojIGRhdGEgPSBqc29uLmxvYWRzKCB0ZXh0ICkKCmRhdGEgPSBldmFsKHRleHQpCmZpbmFsX2RhdGEgPSB7fQpmb3IgaXRlbSBpbiBkYXRhOgogICAgZCA9IHsiY3p1am5payI6IGl0ZW1bImN6dWpuaWsiXSwKICAgICAgICAgIndhcnRvc2MiOiBpdGVtWyJ3YXJ0b3NjIl0sCiAgICAgICAgICJtYWtzaW11bSI6IGl0ZW1bIm1ha3NpbXVtIl0sCiAgICAgICAgICJtaW5pbXVtIjogaXRlbVsibWluaW11bSJdLAogICAgICAgICAiYWt0dWFsaXphY2phIjogaXRlbVsiYWt0dWFsaXphY2phIl0sCiAgICAgICAgICJqZWRub3N0a2EiOiBpdGVtWyJqZWRub3N0a2EiXX0KCiAgICBpZiBpdGVtWyduYXp3YSddIGluIGZpbmFsX2RhdGE6CiAgICAgICAgZmluYWxfZGF0YVtpdGVtWyduYXp3YSddXVsncmVhZGluZ3MnXS5hcHBlbmQoZCkKICAgIGVsc2U6CiAgICAgICAgZmluYWxfZGF0YVtpdGVtWyduYXp3YSddXSA9IHsKICAgICAgICAgICAgImlkX3B1bmt0dSI6IGl0ZW1bImlkX3B1bmt0dSJdLAogICAgICAgICAgICAibmF6d2FfdWkiOiBpdGVtWyJuYXp3YV91aSJdLAogICAgICAgICAgICAicmVhZGluZ3MiOiBbZF0KICAgICAgICB9CnByaW50KGZpbmFsX2RhdGFbJ2FydGVrcm9vbSddKQo=