[{'pf': 'ABC', 'src': 'SCI'}, {'pf': 'ABC', 'src': 'MC'}, {'pf': 'ASR', 'src': 'CC'}, {'pf': 'ASR', 'src': 'CC'}, {'pf': 'ASR', 'src': 'ACS'}, {'pf': 'ABC', 'src': 'CC'}, {'pf': 'NS', 'src': 'ATT'}]
有可能像这样得到上述字典的输出吗?
{
platform:all,
customers:[{
pf:ABC,
src:[SCI,MC,CC]
},{
pf:ASR,
src:[CC,ACS] #CC - duplicates of ASR are removed
],{
pf:NS,
src:[ATT]
}
我尝试使用defaultdict(list),这是没有用的,因为我想要的特定格式。任何帮助吗? 问题来源StackOverflow 地址:/questions/59379036/how-to-return-the-list-of-dictionary-in-specific-format-in-python
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
元素的分组可以通过itertools完成。通过设置删除重复项。 例如:
from pprint import pprint
from itertools import groupby
l = [{'pf': 'ABC', 'src': 'SCI'}, {'pf': 'ABC', 'src': 'MC'}, {'pf': 'ASR', 'src': 'CC'}, {'pf': 'ASR', 'src': 'CC'}, {'pf': 'ASR', 'src': 'ACS'}, {'pf': 'ABC', 'src': 'CC'}, {'pf': 'NS', 'src': 'ATT'}]
out = {'customers': [], 'platform': 'all'}
for v, g in groupby(sorted(l, key=lambda k: k['pf']), lambda k: k['pf']):
out['customers'].append( {'pf': v, 'src': list(set(val['src'] for val in g))} )
pprint(out)
打印:
{'customers': [{'pf': 'ABC', 'src': ['MC', 'SCI', 'CC']},
{'pf': 'ASR', 'src': ['ACS', 'CC']},
{'pf': 'NS', 'src': ['ATT']}],
'platform': 'all'}