gpt4 book ai didi

python - 使用 python 将 dict 值分组为 block

转载 作者:行者123 更新时间:2023-11-28 22:51:49 25 4
gpt4 key购买 nike

我正在尝试找出一种方法,根据键的值将字典值分组为区间。

在我的例子中,我有两个键:'timestamp''value';我需要根据值按时间间隔对其进行分组。我的数据结构是这样的:

[{'timestamp': u'1389631816', 'value': u'0'},
{'timestamp': u'1389633136', 'value': u'0'},
{'timestamp': u'1389633256', 'value': u'1'},
{'timestamp': u'1389633316', 'value': u'1'},
{'timestamp': u'1389633196', 'value': u'0'},
{'timestamp': u'1389633196', 'value': u'0'},
{'timestamp': u'1389633196', 'value': u'0'},
{'timestamp': u'1389633316', 'value': u'1'}]

在这种情况下,我应该有 4 个组:

First Group: 2 items, based on value '0';
Second Group: 2 items, based on value '1';
Third Group: 3 items, based on value '0';
Fourth Group: 1 item, based on value '1'.

出于所有目的,我需要这些组之间的时间指标(在本例中来自 Zabbix 的 ICMP 检查)来创建报告,但我真的被困在这里。

最佳答案

使用 itertools.groupby()对这些进行分组的功能:

from itertools import groupby
from operator import itemgetter

for value, group in groupby(list_of_dicts, key=itemgetter('value')):
print 'Group for value {}'.format(value)
for d in group:
print d

演示:

>>> from itertools import groupby
>>> from operator import itemgetter
>>> list_of_dicts = [{'timestamp': u'1389631816', 'value': u'0'},
... {'timestamp': u'1389633136', 'value': u'0'},
... {'timestamp': u'1389633256', 'value': u'1'},
... {'timestamp': u'1389633316', 'value': u'1'},
... {'timestamp': u'1389633196', 'value': u'0'},
... {'timestamp': u'1389633196', 'value': u'0'},
... {'timestamp': u'1389633196', 'value': u'0'},
... {'timestamp': u'1389633316', 'value': u'1'}]
>>> for value, group in groupby(list_of_dicts, key=itemgetter('value')):
... print 'Group for value {}'.format(value)
... for d in group:
... print d
...
Group for value 0
{'timestamp': u'1389631816', 'value': u'0'}
{'timestamp': u'1389633136', 'value': u'0'}
Group for value 1
{'timestamp': u'1389633256', 'value': u'1'}
{'timestamp': u'1389633316', 'value': u'1'}
Group for value 0
{'timestamp': u'1389633196', 'value': u'0'}
{'timestamp': u'1389633196', 'value': u'0'}
{'timestamp': u'1389633196', 'value': u'0'}
Group for value 1
{'timestamp': u'1389633316', 'value': u'1'}

关于python - 使用 python 将 dict 值分组为 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21098041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com