Seite 1 von 1

Objekt bearbeiten

Verfasst: Donnerstag 17. Juli 2014, 12:50
von phpstefan
Hi !

Ich habe folgendes in einem Skript bei welchem ich eine Funktion hinzufügen möchte in einem Array/JSON Objekt:

repr(Interfaces.log_manager.job_log[user_id])):

{
'3f2': ('3', 0.0078125, 1405595247.855199),
'3f1': ('3', 0.00390625, 1405595247.855164),
'3ed': ('2', 0.0078125, 1405595227.65275),
'3ec': ('2', 0.00390625, 1405595202.852576),
'3eb': ('2', 0.00390625, 1405595202.852538)
}

Ich möchte nun durch das Array bzw. das Objekt walken und den zweiten Wert zusammen rechnen, in PHP wäre es also soetwas wie z.B.

meinobjekt = Interfaces.log_manager.job_log[user_id]

foreach (meinobjekt as key) // durch jede zeile "walken"
gesamtzwei = gesamtzwei + key[1]


gesamtzwei soll dann die ganzen 0.00.. werte zusammengerechnet enthalten.

Weiterhin benötige ich den ersten und den letzten Werte des Timestamps, also eigentlich sowas wie
key[0][0] und max(key[0]) um eine Zeitspanne ausrechnen zu können.

In PHP recht easy.. in Python leider keine Idee..

Wäre super wenn mir jemand nen Tipp geben könnte :)

Re: Objekt bearbeiten

Verfasst: Donnerstag 17. Juli 2014, 13:03
von pillmuncher
ad 1)

Code: Alles auswählen

>>> data = {
...     '3f2': ('3', 0.0078125, 1405595247.855199),
...     '3f1': ('3', 0.00390625, 1405595247.855164),
...     '3ed': ('2', 0.0078125, 1405595227.65275),
...     '3ec': ('2', 0.00390625, 1405595202.852576),
...     '3eb': ('2', 0.00390625, 1405595202.852538)
... }
>>>
>>> sum(b for a, b, c in data.values())
0.02734375
ad 2) dicts haben keine inhärente Ordnung, deswegen haben sie auch kein erstes oder letztes Element. Falls das erste Element dasjenige mit dem kleinsten Key und das letzte das mit dem größten Key sein soll, dann geht sowas:

Code: Alles auswählen

>>> data[min(data)]
('2', 0.00390625, 1405595202.852538)
>>> data[max(data)]
('3', 0.0078125, 1405595247.855199)
Vielleicht willst du aber auch das hier (denn mir ist nicht recht klar, was du möchtest):

Code: Alles auswählen

>>> min(c for a, b, c in data.values())
1405595202.852538
>>> max(c for a, b, c in data.values())
1405595247.855199