Python 按值对包含字典列表的字典进行排序

Python 按值对包含字典列表的字典进行排序,python,list,sorting,dictionary,Python,List,Sorting,Dictionary,我有一本以下格式的字典: {"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}], "key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]} 因此,基本上它是一个字典,包含字典列表作为值 我想按照百分比字段的降

我有一本以下格式的字典:

{"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
因此,基本上它是一个字典,包含字典列表作为值

我想按照百分比字段的降序对其进行排序,因此通过上面的示例,我希望获得:

{"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla bla", "percentage": "0.987"},{"title":"bla bla", "percentage":"0.635"}]}
我还希望获得最高百分比的全球视图。例如:

  • “关键2”:{“标题”:“bla bla bla”,“百分比”:“0.987”}

  • “关键2”:{“标题”:“bla bla”,“百分比”:“0.635”}

  • “关键1”:{“标题”:“bla bla”,“百分比”:“0.3493”}

  • “关键1”:{“标题”:“bla bla bla”,“百分比”:“0.293”}

  • 我已经研究了Python中的各种排序方法,但我仍然不确定如何实现这一点

    我们按照key
    percentage
    的值降序排列字典中每个键的值列表,然后使用字典理解重新创建字典

    dct = {"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
    "key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
    
    result = {key: sorted(value, key=lambda x:x['percentage'], reverse=True) for key, value in dct.items()}
    print(result)
    
    输出将是

    {'key1': [{'title': 'bla bla', 'percentage': '0.3493'}, 
    {'title': 'bla bla bla', 'percentage': '0.293'}], 
    'key2': [{'title': 'bla bla bla', 'percentage': '0.987'}, 
    {'title': 'bla bla', 'percentage': '0.635'}]}
    
    对于全局视图,我们首先更新内部字典,这样就有了
    key
    属性。 然后,我们通过合并所有值列表,然后按百分比降序对它们进行排序,来创建整个值列表(全局视图)

    dct = {"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
    "key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
    
    #Update inner dictionaries with the name of the key for each dictionary
    for key, value in dct.items():
        for v in value:
            v.update({'key':key})
    
    global_view = sorted([v for value in dct.values() for v in value], key=lambda x:x['percentage'], reverse=True)
    
    print(global_view)
    
    这里的输出将是

    [
    {'title': 'bla bla bla', 'percentage': '0.987', 'key': 'key2'}, 
    {'title': 'bla bla', 'percentage': '0.635', 'key': 'key2'}, 
    {'title': 'bla bla', 'percentage': '0.3493', 'key': 'key1'}, 
    {'title': 'bla bla bla', 'percentage': '0.293', 'key': 'key1'}
    ]