0

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

所有值都是动态创建的,因此分组依据的代码是未知的。
我希望有人能够帮助我确定对字典进行分组的最佳方法,以便我可以遍历每个字典以生成表格。字典中实际上有大约 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 - 类别 1
代码 | 名称

CDZ | 山姆
CDF | 詹姆士

GROUP2 - 类别 2
代码 | 名称

CDT | 艾莉

提前非常感谢。

4

2 回答 2

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() 并做任何您喜欢的事情

于 2013-03-04T03:44:57.203 回答
0

您的前两个问题是您的示例输入不是有效的 Python(dict 文字语法是 {},而不是 []),并且您不能在一个 dict 中有两个相同的键。在您解决这些问题之前,我们无能为力。我不确定您要如何解决重复键问题-也许您实际上想要一个字典数组而不是字典字典?

于 2013-03-04T03:26:56.903 回答