如何在Django中将特定字段数据实现到一个列表中并将另一个字段数据实现到另一个列表中

How to implement Specific field data into one list and Another filed data into another list in Django

我正在使用 Django 3x。我有一本 table 书。当我为此编写查询时,我得到的数据是这样的:

book_details = Book.objects.all().values()
print(book_details)

<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}]>

我正在尝试创建以下格式的数据

{'id':[1,2,3], 'author':['ABC', 'XYZ', 'MNO'], 'price':[150,500,200], 'category':['Comic', 'Historical Fiction', 'Horror'], 'available':[1,1,0]}

如何创建这种格式的数据。

请告知最好的方法。一个解释将不胜感激。谢谢!

如果你这样做:

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']}