【发布时间】:2016-06-03 20:27:14
【问题描述】:
作为 SQL 查询的结果,我得到了以下未标准化的元组列表。
data = [(...) {u'timestamp': datetime.datetime(2016, 5, 25, 23, 55, 33), u'sensor': u'GP_PRES', u'value': u'96587'}, {u'timestamp': datetime.datetime(2016, 5, 25, 23, 56, 33), u'sensor': u'GP_NO2', u'value': u'0.221'}, {u'timestamp': datetime.datetime(2016, 5, 25, 23, 56, 33), u'sensor': u'GP_TC', u'value': u'14.600'}, {u'timestamp': datetime.datetime(2016, 5, 25, 23, 56, 33), u'sensor': u'GP_HUM', u'value': u'83.94'}, (...) ]
这些是来自多个传感器但时间戳相同的传感器数据。
我想用相同的时间戳对所有传感器值进行分组。这样我就有一个每个相等时间戳的元组列表。
grouped_data = [... {u'timestamp': datetime.datetime(2016, 5, 25, 23, 55, 33), [{u'sensor': u'GP_PRES', u'value': u'96587'}, { u'sensor': u'GP_NO2', u'value': u'0.221'}, {u'sensor': u'GP_TC', u'value': u'14.600'}, {u'sensor': u'GP_HUM', u'value': u'83.94'}]}, ... ]
我知道我可以使用 itertools 中的 groupby() 函数。我不明白我需要什么样的 Key 函数才能按相等的“时间戳”进行分组。
data2 = sorted(data, key= operator.attrgetter('timestamp'))
for k, g in groupby(data2, keyfunc):
groups.append(list(g))
【问题讨论】:
标签: python mysql collections iterator