代码之家  ›  专栏  ›  技术社区  ›  FrankBlack78

按子字典的值对字典排序

  •  2
  • FrankBlack78  · 技术社区  · 3 年前

    我有一本字典,里面的值也是字典。我想按值字典的值(在示例中是按日期)对主字典的键/值进行排序。

    a = {
        1: {'Text': 'Test1', 'Date': '2021-05-11'},
        2: {'Text': 'Test2', 'Date': '2021-12-12'},
        3: {'Text': 'Test3', 'Date': '2021-01-01'}
        }
    

    有序对象应如下所示:

    a = {
        3: {'Text': 'Test3', 'Date': '2021-01-01'},
        1: {'Text': 'Test1', 'Date': '2021-05-11'},
        2: {'Text': 'Test2', 'Date': '2021-12-12'}
        }
    

    我设法用一系列字典来做到这一点:

    a = [
        {'ID': 1, 'Text': 'Test1', 'Date': '2021-05-11'},
        {'ID': 2, 'Text': 'Test2', 'Date': '2021-12-12'},
        {'ID': 3, 'Text': 'Test3', 'Date': '2021-01-01'},
        ]
    
    a = sorted(a, key=lambda k: k['Date'])
    

    提前谢谢。 弗兰克

    1 回复  |  直到 3 年前
        1
  •  3
  •   python_user    3 年前

    你需要使用 a.items() 然后用钥匙 key=lambda x:x[1]['Date'] x 是值。

    >>> a
    {1: {'Text': 'Test1', 'Date': '2021-05-11'}, 2: {'Text': 'Test2', 'Date': '2021-12-12'}, 3: {'Text': 'Test3', 'Date': '2021-01-01'}}
    >>> dict(sorted(a.items(), key=lambda x:x[1]['Date']))
    {3: {'Text': 'Test3', 'Date': '2021-01-01'}, 1: {'Text': 'Test1', 'Date': '2021-05-11'}, 2: {'Text': 'Test2', 'Date': '2021-12-12'}}