通过多个键将itertools分组

时间:2018-06-27 10:13:23

标签: python itertools

我正在使用itertoolsgroup bydictionary key进行以下操作:

host_data = []
for k,v in itertools.groupby(temp_data, key=lambda x:x['device_id'])
    d = {}
    for dct in v:
        d.update(dct)
    host_data.append(d) 

但是,如果可能的话,我想按“ device_id”和“ port_id”进行分组,如何为该分组添加其他密钥?

3 个答案:

答案 0 :(得分:5)

只需使用元组作为键:

itertools.groupby(temp_data, key=lambda x:(x['device_id'], x['port_id']))

答案 1 :(得分:1)

将键设为元组:key=lambda x: (x['device_id'], x['port_id'])

答案 2 :(得分:0)

您可以使用 itemgetter 创建一个 2 元组分组键:

from operator import itemgetter
...
itertools.groupby(temp_data, key=itemgetter('device_id', 'port_id'))