Найти - Пользователи
Полная версия: Как собрать из данных полученных по API словарь правильного вида с ключами и их значениями?
Начало » Python для новичков » Как собрать из данных полученных по API словарь правильного вида с ключами и их значениями?
1 2
Madgamer2003
Приходят данные по API во в таком виде (см ниже), это 2 строки (из 50000), отделяются фигурными скобками. Мне необходимо в конечном итоге сохранить эти данные в эксель для проверки. Я так понимаю, что мне нужно
собрать словарь следующего вида: {“wareHouseName”: , ..}. Т.е. сначала получить все ключи, а потом все значения для этих ключей. Если не прав, то поправьте меня. Помогите пожалуйста это сделать.
{“lastChangeDate”:“2021-04-20T07:33:46.167”,“supplierArticle”:“1762-19073”,“techSize”:“0”,“barcode”:“8028483228911”,“quantity”:13,“isSupply”:false,“isRealization”:true,“quantityFull”:13,“quantityNotInOrders”:13,“warehouseName”:“Казань”,“inWayToClient”:0,“inWayFromClient”:0,“nmId”:6175295,“subject”:“Оксиданты”,“category”:“Красота”,“daysOnSite”:969,“brand”:“KayPro”,“SCCode”:“0000-2478”,“Price”:1270,“Discount”:30},{“lastChangeDate”:“2021-04-20T07:33:46.167”,“supplierArticle”:“1762-19074”,“techSize”:“0”,“barcode”:“8028483228928”,“quantity”:31,“isSupply”:false,“isRealization”:true,“quantityFull”:31,“quantityNotInOrders”:31,“warehouseName”:“Подольск”,“inWayToClient”:0,“inWayFromClient”:0,“nmId”:6175296,“subject”:“Оксиданты”,“category”:“Красота”,“daysOnSite”:969,“brand”:“KayPro”,“SCCode”:“0000-2478”,“Price”:1270,“Discount”:43},
doza_and
Madgamer2003
Мне необходимо в конечном итоге сохранить эти данные в эксель для проверки
Madgamer2003
Я так понимаю, что мне нужно
собрать словарь следующего вида
Madgamer2003
Если не прав, то поправьте меня.
Если нужно в эксель то и пишите туда, зачем вам промежуточный словарь? берете xlwr,openxlsx или аналогичную библиотеку и по мануалу пишите данные в файл.
py.user.next
Madgamer2003
Приходят данные по API во в таком виде (см ниже), это 2 строки (из 50000), отделяются фигурными скобками.
Скорее всего, это JSON-данные и для их разбора есть модуль json. Там их можно в словарь перегнать, а потом из этого словаря собрать новый словарь, который нужен. И уже после этого полученный словарь можно сохранять куда хочешь.
Madgamer2003
“Там их можно в словарь перегнать, а потом из этого словаря собрать новый словарь, который нужен. ” - как раз с этим у меня проблема…
py.user.next
Madgamer2003
как раз с этим у меня проблема
Ты использовал этот модуль https://docs.python.org/3/library/json.html ?
Madgamer2003
Приложил снимок с кодом, чтобы понятно было что использовал
AD0DE412
Madgamer2003
py.user.next
Madgamer2003
Я так понимаю, что мне нужно
собрать словарь следующего вида: {“wareHouseName”: , ..}. Т.е. сначала получить все ключи, а потом все значения для этих ключей. Если не прав, то поправьте меня.
Короче, ты что-то невнятно описал, а потом говоришь “если неправильно, поправьте меня”. Ты сам-то прочитай, что ты написал нам тут. Какая-то белиберда.

Приведи конкретный и точный пример, что тебе приходит.
Приведи конкретный и точный пример что тебе из этого надо получить.

И используй теги code для точной передачи данных. Движок форума стирает куски данных, если ты их не обозначаешь как код.
Madgamer2003
Спасибо за комментарии и поправки. Пробую объяснить ещё раз.
Вот пример того, что приходит:
 {"lastChangeDate":"2021-04-21T06:47:56.133","supplierArticle":"0068-ПР0210","techSize":"0","barcode":"4605446002470","quantity":46,"isSupply":false,"isRealization":true,"quantityFull":50,"quantityNotInOrders":46,"warehouseName":"Екатеринбург","inWayToClient":4,"inWayFromClient":0,"nmId":6118726,"subject":"Пенки","category":"Красота","daysOnSite":984,"brand":"Repharm","SCCode":"0000-2478","Price":583,"Discount":38},{"lastChangeDate":"2021-04-21T06:47:56.133","supplierArticle":"0068-ПР0210","techSize":"0","barcode":"4605446002470","quantity":0,"isSupply":false,"isRealization":true,"quantityFull":1,"quantityNotInOrders":0,"warehouseName":"Санкт-Петербург","inWayToClient":1,"inWayFromClient":0,"nmId":6118726,"subject":"Пенки","category":"Красота","daysOnSite":984,"brand":"Repharm","SCCode":"0000-2478","Price":583,"Discount":38},

Получить хотелось бы:
 {"wareHouseName": ["Краснодар", "Питер"], "brand":["Repharm", ...],....}
и т.д все ключи и их значения.
py.user.next
  
>>> import json
>>> 
>>> text = """
... [{"lastChangeDate":"2021-04-21T06:47:56.133","supplierArticle":"0068-ПР0210","techSize":"0","barcode":"4605446002470","quantity":46,"isSupply":false,"isRealization":true,"quantityFull":50,"quantityNotInOrders":46,"warehouseName":"Екатеринбург","inWayToClient":4,"inWayFromClient":0,"nmId":6118726,"subject":"Пенки","category":"Красота","daysOnSite":984,"brand":"Repharm","SCCode":"0000-2478","Price":583,"Discount":38},{"lastChangeDate":"2021-04-21T06:47:56.133","supplierArticle":"0068-ПР0210","techSize":"0","barcode":"4605446002470","quantity":0,"isSupply":false,"isRealization":true,"quantityFull":1,"quantityNotInOrders":0,"warehouseName":"Санкт-Петербург","inWayToClient":1,"inWayFromClient":0,"nmId":6118726,"subject":"Пенки","category":"Красота","daysOnSite":984,"brand":"Repharm","SCCode":"0000-2478","Price":583,"Discount":38}]
... """
>>> 
>>> lst = json.loads(text)
>>> lst
[{'lastChangeDate': '2021-04-21T06:47:56.133', 'supplierArticle': '0068-ПР0210', 'techSize': '0', 'barcode': '4605446002470', 'quantity': 46, 'isSupply': False, 'isRealization': True, 'quantityFull': 50, 'quantityNotInOrders': 46, 'warehouseName': 'Екатеринбург', 'inWayToClient': 4, 'inWayFromClient': 0, 'nmId': 6118726, 'subject': 'Пенки', 'category': 'Красота', 'daysOnSite': 984, 'brand': 'Repharm', 'SCCode': '0000-2478', 'Price': 583, 'Discount': 38}, {'lastChangeDate': '2021-04-21T06:47:56.133', 'supplierArticle': '0068-ПР0210', 'techSize': '0', 'barcode': '4605446002470', 'quantity': 0, 'isSupply': False, 'isRealization': True, 'quantityFull': 1, 'quantityNotInOrders': 0, 'warehouseName': 'Санкт-Петербург', 'inWayToClient': 1, 'inWayFromClient': 0, 'nmId': 6118726, 'subject': 'Пенки', 'category': 'Красота', 'daysOnSite': 984, 'brand': 'Repharm', 'SCCode': '0000-2478', 'Price': 583, 'Discount': 38}]
>>> 
>>> keys = list(lst[0])
>>> keys
['lastChangeDate', 'supplierArticle', 'techSize', 'barcode', 'quantity', 'isSupply', 'isRealization', 'quantityFull', 'quantityNotInOrders', 'warehouseName', 'inWayToClient', 'inWayFromClient', 'nmId', 'subject', 'category', 'daysOnSite', 'brand', 'SCCode', 'Price', 'Discount']
>>> 
>>> dct = {}
>>> for d in lst:
...     for k in keys:
...         if k not in dct:
...             dct[k] = [d[k]]
...         else:
...             dct[k].append(d[k])
... 
>>> dct
{'lastChangeDate': ['2021-04-21T06:47:56.133', '2021-04-21T06:47:56.133'], 'supplierArticle': ['0068-ПР0210', '0068-ПР0210'], 'techSize': ['0', '0'], 'barcode': ['4605446002470', '4605446002470'], 'quantity': [46, 0], 'isSupply': [False, False], 'isRealization': [True, True], 'quantityFull': [50, 1], 'quantityNotInOrders': [46, 0], 'warehouseName': ['Екатеринбург', 'Санкт-Петербург'], 'inWayToClient': [4, 1], 'inWayFromClient': [0, 0], 'nmId': [6118726, 6118726], 'subject': ['Пенки', 'Пенки'], 'category': ['Красота', 'Красота'], 'daysOnSite': [984, 984], 'brand': ['Repharm', 'Repharm'], 'SCCode': ['0000-2478', '0000-2478'], 'Price': [583, 583], 'Discount': [38, 38]}
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB