2012-12-13 90 views
0

的矩陣最大值我有以下代碼:最佳Python的方式找到對象

resdata = dict() 
rows = result.rows.all() 
for key, group in groupby(rows, lambda x: x.space): 
    row = list() 
    for item in group: 
     cell = { 
      'time': item.time, 
      'value': item.value 
     } 
     row.append(cell) 
    resdata[key] = row 

樣本resdata是:

resdata = [ 
    { 
     "skl": "nn_skl:5608", 
     "cols": [ 
     { 
      "value": 115.396956868, 
      "time": "2012-06-02 00:00:00" 
     }, 
     { 
      "value": 112.501399874, 
      "time": "2012-06-03 00:00:00" 
     }, 
     { 
      "value": 106.528068506, 
      "time": "2012-06-18 00:00:00" 
     } 
     ], 
     "len": 226 
    }, 
    { 
     "skl": "nn_skl:5609", 
     "cols": [ 
     { 
      "value": 114.541167284, 
      "time": "2012-06-02 00:00:00" 
     }, 
     ], 
     "len": 226 
    }, 
    { 
     "skl": "nn_skl:5610", 
     "cols": [ 
     { 
      "value": 105.887267189, 
      "time": "2012-06-18 00:00:00" 
     } 
     ], 
     "len": 225 
    } 
] 

我想要做的是讓所有單元格中的最大「值」和最大「時間」。

+1

,如果你給一個數據結構,我們可以實際測試上這將是很好。 –

+0

@Nasir:Lattyware帶來了一個好點,這引發了另一個問題。你在問什麼?你想知道如何解析,或者只是找到最大值的算法?如果你可以包含一個代碼片段來處理你知道的東西,那麼其他人可以專注於你需要幫助的部分,這將會有所幫助。 – RonaldBarzell

+0

對不起。我會在一秒 – Nasir

回答

3

假設您已經轉換成Python對象與json.loads或諸如此類的東西,那麼你想要的東西,如:

max(b["time"] for b in a["cols"] for a in data) 
+0

這裏沒有真正需要構建一個列表,如果你只是省略方括號,你會得到一個生成器表達式,它將起到相同的作用,但讀取更好一點。 –

+0

是的,我需要擺脫這種習慣 – YXD

+0

在這種情況下,這並不是什麼大問題,因爲'max()'必須消耗整個東西,看起來更好一點。無論如何,+1是一個很好的解決方案。 –