Python 基于日期差异从嵌套在另一个词典中的列表中删除词典

Python 基于日期差异从嵌套在另一个词典中的列表中删除词典,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有一本字典的格式是 test = { "A": [ { "sourceName": "MongoDB", "Date": "2020-11-10T00:00:00.000Z" }, { "sourceName": "Dynamo", "Da

我有一本字典的格式是

test = {
    "A": [
      {
        "sourceName": "MongoDB",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "Dynamo",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "Dynamo",
        "Date": "2020-12-09T00:00:00.000Z"
      }
    ],
    "B": [
      {
        "sourceName": "MongoDB",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "SQL",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "Dynamo",
        "Date": "2020-11-10T00:00:00.000Z"
      }
    ]
  };
我正在尝试删除列表中的字典,其中键“sourceName”出现了多次,键“Date的值为更新的日期

例如,在上面给定的场景中,对于键“A”,有多个Dynamo实例,因此dictionary元素

      {
        "sourceName": "Dynamo",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "Dynamo",
        "Date": "2020-12-09T00:00:00.000Z"
      }
最终生成的词典应仅包含

      {
        "sourceName": "Dynamo",
        "Date": "2020-11-10T00:00:00.000Z"
      }
两个人中的一个。最终结果应该是这样的

{
    "A": [
      {
        "sourceName": "MongoDB",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "Dynamo",
        "Date": "2020-11-10T00:00:00.000Z"
      }
    ],
    "B": [
      {
        "sourceName": "MongoDB",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "SQL",
        "Date": "2020-11-10T00:00:00.000Z"
      },
      {
        "sourceName": "Dynamo",
        "Date": "2020-11-10T00:00:00.000Z"
      }
    ]
  };

您可以使用pandas对重复项进行排序和删除,然后再转换回dictionary

例如:

说明:对于每个类别,将字典列表转换为数据框,按日期排序,然后删除重复的源名称,保留较早的日期。然后将DataFrame转换回字典列表

输出:

{'A': [{'sourceName': 'MongoDB', 'Date': '2020-11-10T00:00:00.000Z'},
  {'sourceName': 'Dynamo', 'Date': '2020-11-10T00:00:00.000Z'}],
 'B': [{'sourceName': 'MongoDB', 'Date': '2020-11-10T00:00:00.000Z'},
  {'sourceName': 'SQL', 'Date': '2020-11-10T00:00:00.000Z'},
  {'sourceName': 'Dynamo', 'Date': '2020-11-10T00:00:00.000Z'}]}
{'A': [{'sourceName': 'MongoDB', 'Date': '2020-11-10T00:00:00.000Z'},
  {'sourceName': 'Dynamo', 'Date': '2020-11-10T00:00:00.000Z'}],
 'B': [{'sourceName': 'MongoDB', 'Date': '2020-11-10T00:00:00.000Z'},
  {'sourceName': 'SQL', 'Date': '2020-11-10T00:00:00.000Z'},
  {'sourceName': 'Dynamo', 'Date': '2020-11-10T00:00:00.000Z'}]}