#python #django #django-models #django-rest-framework
Вопрос:
Я использую Django 3x. У меня есть один столик под названием «Книга». Когда я пишу запрос для этого, я получаю такие данные:
book_details = Book.objects.all().values() print(book_details) lt;QuerySet [{'id': 1, 'author': 'ABC', 'price': 150, 'category': 'Comic', 'available': 1}, {'id': 2, 'author': 'XYZ', 'price': 500, 'category': 'Historical Fiction', 'available': 1}, {'id': 3, 'author': 'MNO', 'price': 200, 'category': 'Horror', 'available': 0}]gt;
Я пытаюсь создать данные в следующем формате
{'id':[1,2,3], 'author':['ABC', 'XYZ', 'MNO'], 'price':[150,500,200], 'category':['Comic', 'Historical Fiction', 'Horror'], 'available':[1,1,0]}
Как создавать данные в этом формате.
Пожалуйста, посоветуйте лучший способ сделать это. Я был бы очень признателен за объяснение. Спасибо!.
Ответ №1:
Если вы это сделаете:
lst_of_dicts = list(book_details)
Вы получите следующее, поэтому, если вы напечатаете lst_of_dicts
, это будет выглядеть так:
[{'id': 1, 'author': 'ABC', 'price': 150, 'category': 'Comic', 'available': 1}, {'id': 2, 'author': 'XYZ', 'price': 500, 'category': 'Historical Fiction', 'available': 1}, {'id': 3, 'author': 'MNO', 'price': 200, 'category': 'Horror', 'available': 0}]
Итак, это список словарей, в то время как вам нужен список списков, так что есть еще один шаг, который вам необходимо сделать, и это вот этот:
from itertools import chain # Necessary import keys = set(chain(*[dic.keys() for dic in lst_of_dicts ])) final_dict = {key : [dic[key] for dic in lst_of_dicts if key in dic] for key in keys }
final_dict
будет выглядеть так:
{'id': [1, 2, 3], 'author': ['ABC', 'XYZ', 'MNO'], 'available': [1, 1, 0], 'price': [150, 500, 200], 'category': ['Comic', 'Historical Fiction', 'Horror']}