在python中对多个词典进行排序和分组

时间:2013-03-04 03:21:34

标签: python list dictionary group-by grouping

我有一个未知数量的字典,每个字典都由特定代码标识。

所有值都是动态创建的,因此要分组的代码是未知的 我希望有人能够帮助我确定将字典分组的最佳方法,以便我可以通过每个字典来生成一个表格。实际上字典中有大约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 |艾莉

提前非常感谢。

2 个答案:

答案 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的词典?