2013-03-04 79 views
0

我有一個未知數量的詞典,每個詞典都由特定的代碼標識。在python中排序和分組多個詞典

所有的值都是動態創建的,所以要分組的代碼是未知的。
我希望有人能夠幫助我確定將詞典分組的最佳方式,以便我可以通過每個詞典來生成一張表格。字典中實際上有大約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'}] 

我希望能夠利用以產生以下格式化這些字典到表:

組別1 - 產品組別
代碼|名稱

CDZ | Sam
CDF | James

GROUP2 - category2
代碼|名稱

CDT | Ellie

非常感謝。

回答

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()循環和做任何你喜歡

+0

完美!謝謝!我知道它必須比我做得更簡單。 – devjess 2013-03-04 04:14:28

0

你的前兩個問題是你的示例輸入是無效的Python(字典語法是{},而不是[]),並且你不能在一個字典中有兩個相同的鍵。在你解決這些問題之前,我們無能爲力。我不知道你想如何解決重複密鑰問題 - 也許你實際上需要一個數組的字典而不是字典的字典?

+0

啊!是的,我認爲你實際上是對的!我很快會回來編輯。 – devjess 2013-03-04 03:44:50