@O_oo

Как корректней распарсить список из списков для MongoDB?

Заранее прошу прощения за не совсем понятный заголовок.

Суть: есть список, который хранит координаты.

Список имеет следующий вид:

self. coordinates = [ [673, 103],  [673, 104],  [673, 105],  [673, 104] ]


Я его спокойно могу добавить в MongoDB под маркером "Coords" в документ со всеми полями:

tempDef[f"defect{index+1}"]={"Type":self.verticalLayout_10.itemAt(index).widget().type,
"FormType":self.verticalLayout_10.itemAt(index).widget().FormType,


"Coords":self.verticalLayout_10.itemAt(index).widget().coordinates,

"Color":{
   "R":self.verticalLayout_10.itemAt(index).widget().color.red(),
   "G":self.verticalLayout_10.itemAt(index).widget().color.green(),
   "B":self.verticalLayout_10.itemAt(index).widget().color.blue()                         
 },
"SizeMupltiply":self.verticalLayout_10.itemAt(index).widget().sizemultiplier,
"CoordFactor":{
    "Width":self.Img_View_label.size().width(),
    "Height":self.Img_View_label.size().height()
   }
}


В БД он себя будет отображать следующим образом:

66caefda9a799629352676.png

Я хочу, чтобы в MongoDB каждый элемент массива отображал не:

0: 673
1: 102


А вот так:

x: 673
y: 102


Собственно, вопрос – как мне лаконично произвести форматирование этого всего дела?

Есть, конечно, вариант просто по enumerate списка сформировать элемент Coords и потом его добавить, но может есть альтернативный более "красивый" метод?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
deepblack
@deepblack Куратор тега Python
Например так:

Python 3.12.4 (main, Jun  6 2024, 18:26:44) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> initial_data = {
...     "coords": [[673, 103], [673, 104], [673, 105], [673, 104]]
... }
>>>
>>> transformed_data = {
...     "coords": [{"x": coord[0], "y": coord[1]} for coord in initial_data["coords"]]
... }
>>> transformed_data
{'coords': [{'x': 673, 'y': 103}, {'x': 673, 'y': 104}, {'x': 673, 'y': 105}, {'x': 673, 'y': 104}]}
>>>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы