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'}]}