我正在努力寻找一种令人信服的 pythonic 方式在 dict 列表上进行分组,下面似乎具有良好的可读性,但不是最有效的方式:我必须先排序(groupby 的先决条件)然后进行分组by (这里的另一个问号是关于如何实现 itertools 中的 groupby ..)。
一个明显的选择是使用 collections.defaultdict 但我将不得不做很多 list.append (和更少的pythonic?)。你认为哪个是更好的选择?还是有其他更好的分组方式?谢谢
from itertools import groupby
from operator import itemgetter
data = [ {'x':1, 'y':1},
{'x':2, 'y':2},
{'x':3, 'y':2},
{'x':4, 'y':1}, ]
sortedData = sorted(data, key=itemgetter('y'))
for y, d in groupby( sortedData, itemgetter('y')):
print y, list(d)
1 [{'y': 1, 'x': 1}, {'y': 1, 'x': 4}]
2 [{'y': 2, 'x': 2}, {'y': 2, 'x': 3}]