Objekt bearbeiten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
phpstefan
User
Beiträge: 1
Registriert: Donnerstag 17. Juli 2014, 12:40

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 :)
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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
In specifications, Murphy's Law supersedes Ohm's.
Antworten