从json文件中移除与多个键匹配的重复项

2024-05-19 19:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

原始帖子=Remove duplicates from json data

这只是我的第二个帖子。我没有足够的观点来评论我的问题…所以我来了。在

安迪·海登提出了一个很好的观点-“而且,那些不是真正的复制品。。。–安迪·海登”

我的问题是。。。如何通过匹配json文件中的多个键来删除json文件中的重复项?在

以下是原始示例:(有人指出它不是有效的json)

{
  {obj_id: 123,
    location: {
      x: 123,
      y: 323,
  },
  {obj_id: 13,
    location: {
      x: 23,
      y: 333,
  },
 {obj_id: 123,
    location: {
      x: 122,
      y: 133,
  },
}

我的例子与这个例子非常相似,除了在我的例子中,它会保留所有这些,因为obj_id的x和y值是唯一的,但是如果x和y相同,则会从json文件中删除一个。在

我发现的所有例子都是基于一个键匹配的。。在

我不知道这是否重要,但我需要匹配的关键字是“Company Name”、“First Name”和“Last Name”(这是公司和联系人的100k多行json-有时同一个人是多个公司的联系人,这就是我需要匹配多个键的原因)

谢谢。在


Tags: 文件namefromidjsonobjdata联系人
1条回答
网友
1楼 · 发布于 2024-05-19 19:18:07

我希望这能满足您的要求(它只检查名字和姓氏是否不同)

raw_data = [
        {
            "Company":123,
            "Person":{
                "First Name":123,
                "Last Name":323
            }
        },
        {
            "Company":13,
            "Person":{
                "First Name":123,
                "Last Name":323
            }
        },
        {
            "Company":123,
            "Person":{
                "First Name":122,
                "Last Name":133
            }
        }
    ]

unique = []
for company in raw_data:
    if all(unique_comp["Person"] != company["Person"] for unique_comp in unique):
        unique.append(company)

print(unique)

#>>> [{'Company': 123, 'Person': {'First Name': 123, 'Last Name': 323}}, {'Company': 123, 'Person': {'First Name': 122, 'Last Name': 133}}]

相关问题 更多 >