2012-12-13 58 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是一个很好的解决方案。 –