#python #json
Вопрос:
Если у меня есть JSON, подобный следующему:
"children": [ { "firstName": "Alice", "age": 6 }, { "firstName": "Bob", "age": 8 } { "firstName": "Candice", "age": 4 } ]
И мне нужен массив всех значений имени, как бы я мог получить их с помощью python?
Я попробовал следующее, и это работает, но мой набор данных больше (40 000 строк), и повторять его было бы нецелесообразно:
children = JSON firstNames = [] firstNames.append(json.loads(children.text)['children'][0]['firstName']) firstNames.append(json.loads(children.text)['children'][1]['firstName']) firstNames.append(json.loads(children.text)['children'][2]['firstName'])
Я рассматривал возможность использования цикла for для замены чисел, но понятия не имею, как это сделать.
Ответ №1:
@ашер, вы можете значительно повысить производительность, если выполните удаление сериализации только один раз. И для сбора имен вы можете использовать понимание списка:
doc = json.loads(children.text) firstNames = [child["firstname"] for child in doc["children"]]
Ответ №2:
Должно быть ясно, как расширить то, что у вас есть. Ради бога, не повторяйте загрузку JSON несколько раз.
data = json.loads(children.text) firstNames = [k['firstname'] for k in data['children']]