我有一个未知数量的字典,每个字典都由特定代码标识。
所有值都是动态创建的,因此要分组的代码是未知的 我希望有人能够帮助我确定将字典分组的最佳方法,以便我可以通过每个字典来生成一个表格。实际上字典中有大约7个项目。
每个字典都是表格中的一行。
示例:
results = ['GROUP1':{'name':'Sam', 'code':'CDZ', 'cat_name':'category1', 'cat_code':'GROUP1'}, 'GROUP1':{'name':'James', 'code':'CDF', 'cat_name':'category1', 'cat_code':'GROUP1'}, 'GROUP2':{'name':'Ellie', 'code':'CDT', 'cat_name':'category2', 'cat_code':'GROUP2'}]
我希望能够将这些词典格式化为表格,以生成以下内容:
GROUP1 - category1
代码| NAME
CDZ |山姆
CDF |詹姆斯
GROUP2 - category2
代码| NAME
CDT |艾莉
提前非常感谢。
答案 0 :(得分:1)
如果results
是这样的词典列表
>>> results = [
... {'name': 'Sam', 'code': 'CDZ', 'cat_name': 'category1', 'cat_code': 'GROUP1'},
... {'name': 'James', 'code': 'CDF', 'cat_name': 'category1', 'cat_code': 'GROUP1'},
... {'name': 'Ellie', 'code': 'CDT', 'cat_name': 'category2', 'cat_code': 'GROUP2'}]
>>> from collections import defaultdict
>>> D = defaultdict(list)
>>> for item in results:
... D[item['cat_code'], item['cat_name']].append((item['code'], item['name']))
...
>>> import pprint
>>> pprint.pprint(dict(D))
{('GROUP1', 'category1'): [('CDZ', 'Sam'), ('CDF', 'James')],
('GROUP2', 'category2'): [('CDT', 'Ellie')]}
你可以遍历D.items()并做任何你喜欢的事情
答案 1 :(得分:0)
你的前两个问题是你的示例输入不是有效的Python(dict文字语法是{},而不是[]),并且你不能在一个dict中有两个相同的键。在你解决这些问题之前,我们无能为力。我不确定你是怎么想修复重复键问题的 - 也许你真的想要一系列的dicts而不是dicts的词典?