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

最初の 2 つの問題は、入力例が有効な Python ではなく (dict リテラル構文は [] ではなく {} です)、1 つの dict に 2 つの同一のキーを含めることができないことです。これらを修正するまで、私たちは何もできません。重複キーの問題をどのように修正したいのかわかりません。実際には、dict の dict ではなく、dict の配列が必要なのかもしれません。

于 2013-03-04T03:26:56.903 に答える