В python есть ли способ автоматически заменить отсутствующие значения?
Я пытаюсь проанализировать объект JSON, состоящий из массива объектов. Каждый объект содержит несколько полей, но поля часто отсутствуют. Вот пример:
{ 'objects' : [{ 'fieldA' : 1, 'fieldB' : 2, 'fieldC' : 3, }, { 'fieldA' : 7, 'fieldC' : 8, }, {}, { 'fieldB' : 1, 'fieldC' : 0, }] }
Я хотел бы преобразовать каждое из полей в список, сохраняя порядок объектов, что эквивалентно этому:
fieldA = [1,7,"Missing","Missing"] fieldB = [2,"Missing","Missing",1] fieldC = [3,8,"Missing",0]
Есть ли простой способ сделать это? Я могу придумать, как это сделать, что связано с множеством операторов «if» и «in» и повторной итерацией по спискам. Но кажется, что должен быть более питонический способ сделать это, например:
fieldA = [ (obj.fieldA | "missing") for obj in json.objects]
Синтаксис python позволяет что-то вроде этого?
- Избегайте новой строки в конце файла – Python
- Разница между последовательными элементами в списке
- Если в Python я помещаю список внутри кортежа, могу ли я безопасно изменить содержимое этого списка?
- Удалить элемент из списка в Python, итерации по нему
- Python: список, содержащий подсписку строк
Вам нужен метод dict.get()
:
fieldA = [obj.get("fieldA", "missing") for obj in json["objects"]]
Обратите внимание, что элементы словаря доступны с помощью ["key"]
, а не с .key
.
- Объединение двух списков и удаление дубликатов без удаления дубликатов в исходном списке
- Как добавить элементы из 2 коротких списков в другой большой список кортежей?
- «Python way» для синтаксического анализа и условной замены каждого элемента в 2D-списке
- Python: поиск идентичных элементов в нескольких списках
- Индексы списка ошибок должны быть целыми числами, а не списком. Принимать значения одного массива, использовать их как индексы для удаления значений из другого массива
- Список сглаживания в python
- трюк с пустым списком python
- В Python, почему в списке (Нет) есть ошибка, но нет?
- Случаи, когда использование кортежа является обязательным