python - 如何在python中的字典列表的字典中对数据进行排序?

标签 python list dictionary ordereddictionary

请帮帮我。我有这样的数据集:

 my_dict = { 'project_1' : [{'commit_number':'14','name':'john'},
                            {'commit_number':'10','name':'steve'}],
             'project_2' : [{'commit_number':'12','name':'jack'},
                            {'commit_number':'15','name':'anna'},
                            {'commit_number':'11','name':'andy'}]
           }

我需要根据提交编号降序对数据集进行排序,并通过忽略使用 python 的项目名称将其放入新列表中。预期的列表将是这样的:

ordered_list_of_dict = [{'commit_number':'15','name':'anna'},
                        {'commit_number':'14','name':'john'},
                        {'commit_number':'12','name':'jack'},
                        {'commit_number':'11','name':'andy'},
                        {'commit_number':'10','name':'steve'}]

非常感谢你帮助我。

最佳答案

  1. 提取 my_dict 的值作为列表的列表*
  2. 将每个子列表连接在一起(展平dict_values)以形成一个平面列表
  3. commit_number 对每个元素进行排序

*python2 上的列表列表。在 python3 上,返回一个 dict_values 对象。

from itertools import chain

res = sorted(chain.from_iterable(my_dict.values()), 
             key=lambda x: x['commit_number'], 
             reverse=True)

[{'commit_number': '15', 'name': 'anna'},
 {'commit_number': '14', 'name': 'john'},
 {'commit_number': '12', 'name': 'jack'},
 {'commit_number': '11', 'name': 'andy'},
 {'commit_number': '10', 'name': 'steve'}]

在 python2 上,您可以使用 dict.itervalues 而不是 dict.values 来达到同样的效果。

关于python - 如何在python中的字典列表的字典中对数据进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469433/

相关文章:

python - Matplotlib vline 标签参数未显示

Python 列表使用随机元素扩展,保持边界/原始

python - 在 Python 中对多维字典进行排序

python - 从Python中的链表中删除一个元素

python - 如何在 Python 中比较两个字典键?

java - CompassADFAdaptor 类型中的错误 : The method convertProspectIds(Map<String, String>) 不适用于参数 (List<String>)

python - 选择所有内容的 `:` 的替代方案

Python顺序运行线程

Java,类类型列表

python 将两个列表元素明智地相乘 - 其中一个是嵌套的