最近工作中遇到了一个需求,需要将一个列表中的嵌套字典,根据字典的某个value来做分组
如下
a = [{"name": 'tom', "age": '18'}, {"name": "jack", "age": "42"}, {"key": "lily", "age": "18"}]
需要把age相同的字典分组取出来
解决方案
from itertools import groupby
from operator import itemgetter
rows = [{"name": 'tom', "age": 1}, {"name": "jack", "age": 12}, {"name": "lily", "age": 12}]
for date, items in groupby(sorted(rows, key=itemgetter('age')), key=itemgetter('age')):
print(date,list(items))
cookies
在完成到这一步的时候,发现在最后for循环中取item的值的时候,取到的内容为空,觉得是内置模块实现过程中有对items进行操作,所以进行一次深拷贝解决问题
from itertools import groupby
from operator import itemgetter
import copy
rows = [{"name": 'tom', "age": 1}, {"name": "jack", "age": 12}, {"name": "lily", "age": 12}]
for date, items in groupby(sorted(rows, key=itemgetter('age')), key=itemgetter('age')):
items = copy.deepcopy(items)
print(date,list(items))
感谢评论区的大佬的提醒,错误已更正!