#python #python-3.x #for-loop
#python #python-3.x #для цикла
Вопрос:
У меня есть файл json. Это выглядит так:
example = {"evaluation user1":{
"results test1": {
"chapter": "Chapter1",
"Chapter_type": "Chemistry1",
"Exercice 1 code:Chem01": "Wright",
"Exercice 2 code:Chem02": "Wrong",
"Exercice 3 code:Chem03": "Wrong",
"userEmail": "user1@mail.com",
},
"results test2": {
"chapter": "Chapter1",
"Chapter_type": "Chemistry2",
"Exercice 1 code:Chem01": "Wrong",
"Exercice 2 code:Chem02": "Wright",
"Exercice 3 code:Chem03": "Wrong",
"userEmail": "user1@mail.com",
}}
}
Мне нужно извлечь ключ / значения и добавить их в фрейм данных.
Я сделал что-то вроде этого:
for key, value in example.items():
if 'evaluation' in key:
for key1, value1 in value.items():
computedValues = {}
computedValues['Email'] = value['userEmail']
computedValues['Chapter'] = value['chapter']
Это сработало для ключей / значений, таких как «глава»: «Глава 1» из примера.
Моя проблема в том, что мне нужно будет извлечь содержимое ключа «exercices»:
Code Answer
Chem01
Email Test Code Answer
user1@mail.com test1 Chem01 Wright
user1@mail.com test1 Chem02 Wrong
user1@mail.com test1 Chem03 Wrong
user1@mail.com test2 Chem01 Wrong
user1@mail.com test2 Chem02 Wright
user1@mail.com test2 Chem03 Wrong
В принципе, мне нужно было бы получить доступ к ключу / значению (например, электронной почте) в столбце / строке, но мне нужно было бы получить доступ к части ключа / значения упражнений в строках, потому что у меня может быть много кодов для упражнений, и я не хочу иметь сотни столбцов.
Кто-нибудь может мне помочь с этим?
Комментарии:
1. можете ли вы поделиться своим целевым результатом? Я не понимаю, какой
exercices
столбец вы имеете в виду?2. Не столбец. В исходном примере json упражнения представлены в виде информации о ключе / значении: «Код упражнения 1: Chem01»: «Неверно»,
Ответ №1:
Изменен ваш пример кода для построения списка списков:
computedValues = []
for key, value in example.items():
if 'evaluation' in key:
for key1, value1 in value.items():
test0, test = key1.split(" ")
email = value1.pop('userEmail')
chapter = value1.pop('chapter')
chapter_type = value1.pop('Chapter_type')
for key2, value2 in value1.items():
code0, code = key2.split(':')
computedValues.append([email, test, chapter, code, value2])
Результат будет:
[['user1@mail.com', 'test1', 'Chapter1', 'Chem01', 'Wright'],
['user1@mail.com', 'test1', 'Chapter1', 'Chem02', 'Wrong'],
['user1@mail.com', 'test1', 'Chapter1', 'Chem03', 'Wrong'],
['user1@mail.com', 'test2', 'Chapter1', 'Chem01', 'Wrong'],
['user1@mail.com', 'test2', 'Chapter1', 'Chem02', 'Wright'],
['user1@mail.com', 'test2', 'Chapter1', 'Chem03', 'Wrong']]
Я не понимаю, почему вы пытаетесь снова поместить свои обработанные данные в dict.
Если бы вы уточнили конечный результат, я мог бы обновить ответ.