【问题标题】:sorting and grouping multiple dictionaries in python在python中对多个字典进行排序和分组
【发布时间】:2013-03-04 03:21:34
【问题描述】:

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

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

光盘 |山姆
CDF |詹姆斯

GROUP2 - 类别2
代码 |姓名

大唐 |艾莉

提前非常感谢。

【问题讨论】:

    标签: python list dictionary group-by grouping


    【解决方案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() 并做任何你喜欢的事情

    【讨论】:

    • 完美!谢谢!我知道它必须比我做的更简单。
    【解决方案2】:

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

    【讨论】:

    • 啊!是的,我认为你是对的!我可能很快就会回来进行编辑。
    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 2011-11-13
    • 2017-02-20
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多