【问题标题】:remove duplicates data from complex json file in python从python中的复杂json文件中删除重复数据
【发布时间】:2018-05-07 15:24:12
【问题描述】:

我有一个复杂的 json 文件,其中包含嵌套的 dics。 它看起来像这样

{
    "objectivelist": [{
        "measureid": "1122",
        "gradeID": "4222332",
        "graduationdate": "May",
        "system": {
            "platform": "MAC",
            "TeacherName": "Mike",
            "manager": "Jim",
            "studentinfomation": {
                "ZIP": "94122",
                "city": "SF"
            }
        },
        "measureid": "1122",
        "gradeID": "4222332",
        "graduationdate": "May",
        "system": {
            "platform": "MAC",
            "TeacherName": "joshe",
            "manager": "steven"
        },
        "studentinfomation": {
            "ZIP": "94122",
            "city": "SF"
        }
    }]
}

这里grade ID和Measured ID是一样的,所以结果应该只需要显示一次,我的结果应该是这样的:

{"measureid":"1122","gradeID"4222332","graduationdate":"May"}

我不需要经理姓名、教师姓名等。

不知道该怎么做。我尝试使用理解,但不知道在嵌套字典中使用它的人。

谢谢你们。

【问题讨论】:

  • 你的 json 有很多不好的语法。你能修复 JSON 吗?
  • 根据jsonlint.com至少JSON中的树错误
  • 抱歉各位,现在可以用了吗?

标签: python arrays json


【解决方案1】:

根据 json 文件的大小,您可能需要更好的解决方案。我们将对我们感兴趣的字段进行哈希处理,并迭代构建唯一的 json。

check_set = set()
output = []
interesting_fields = ['measureid', 'gradeID', 'graduationdate']
for dat in X['objectivelist']:
    m = hashlib.md5()
    m.update(dat['measureid'].encode('utf-8'))
    m.update(dat['gradeID'].encode('utf-8'))
    m.update(dat['graduationdate'].encode('utf-8'))
    digest = m.hexdigest()

    if digest not in check_set:
        output.append({key: dat[key] for key in ['measureid', 'gradeID', 'graduationdate']})
        check_set.add(digest)

您可以在output 中找到您的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2013-06-09
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多