Удаление дубликатов данных из сложного файла json в Python

У меня есть сложный файл 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"
        }
    }]
}

Здесь идентификатор оценки и измеренный идентификатор совпадают, поэтому результат должен отображаться только один раз, и мой результат должен быть таким:

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

Мне не нужны имя менеджера, имя преподавателя и т. д.

не знаю, как это сделать. Я пытаюсь использовать понимание, но не знаю, для кого это использовать в словаре гнезда.

Спасибо вам, ребята.

У вашего json много плохого синтаксиса. Не могли бы вы исправить JSON?

Ashish Acharya 07.05.2018 17:28

По крайней мере, дерево ошибок в JSON согласно jsonlint.com

Mika72 07.05.2018 17:35

извините, ребята, теперь это работает?

qing zhangqing 07.05.2018 17:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
121
1

Ответы 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.

Другие вопросы по теме