我有一个词典列表,我想对这些数据进行分组。我用下面的:按分层格式对Python词典进行分组
group_list = []
for key, items in itertools.groupby(res, operator.itemgetter('dept')):
group_list.append({key:list(items)})
对于像这样
[{'dept':1, 'age':10, 'name':'Sam'},
{'dept':1, 'age':12, 'name':'John'},
.
.
.
{'dept':2,'age':20, 'name':'Mary'},
{'dept':2,'age':11, 'name':'Mark'},
{'dept':2,'age':11, 'name':'Tom'}]
数据输出将是:
[{1:[{'dept':1, 'age':10, 'name':'Sam'},
{'dept':1, 'age':12, 'name':'John'}],
{2:[{'dept':2,'age':20, 'name':'Mary'},
{'dept':2,'age':11, 'name':'Mark'},
{'dept':2,'age':11, 'name':'Tom'}]
...
]
现在,如果我使用多个密钥想组说“部门”和'年龄',上述方法返回
[{(2, 20): [{'age': 20, 'dept': 2, 'name': 'Mary'}]},
{(2, 11): [{'age': 11, 'dept': 2, 'name': 'Mark'},
{'age': 11, 'dept': 2, 'name': 'Tom'}]},
{(1, 10): [{'age': 10, 'dept': 1, 'name': 'Sam'}]},
{(1, 12): [{'age': 12, 'dept': 1, 'name': 'John'}]}]
期望的输出将是:
可以使用itertools来完成吗?或者我需要自己写这些代码吗? 谢谢。
你是否真的想要在输出中使用字典列表?列表中的每个外部字典似乎都有一个单一的密钥 - 不会有一个简单的字典(对于上面的例子,密钥=(1,2))就足够了吗? – jsbueno 2012-03-20 17:27:56
我需要这个原因我正在为Django构建一个小型报表引擎。组通常会被解释为模板中的循环。我认为他们是分层的,因为每个组都会有不同的数据。 – thelinuxer 2012-03-20 17:39:47