У меня есть сложный файл 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 согласно jsonlint.com
извините, ребята, теперь это работает?






В зависимости от размера 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.
У вашего json много плохого синтаксиса. Не могли бы вы исправить JSON?