Как извлечь некрасивые данные из словаря на python

#python #dictionary #extract #assert

Вопрос:

Я пытаюсь написать тесты для своего api, мой ответ приводит меня к уродливому словарю только с одним значением и большим количеством информации в нем, включая список, который мне нужно утвердить:

 {'data': OrderedDict([('count', 2), ('next', None), ('previous', None), ('results', [OrderedDict([('id', 1), ('uuid', '345cd6a7-69d2-4e35-808c-7bbfbee0ed66'), ('created_at', '2021-07-23T15:51:18.619102Z'), ('updated_at', '2021-07-23T15:51:18.619122Z'), ('deleted', False), ('name', 'Vegan'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)]), OrderedDict([('id', 2), ('uuid', 'e6a7ce08-259e-4a5b-bf96-2f311382b8ac'), ('created_at', '2021-07-23T15:51:18.619359Z'), ('updated_at', '2021-07-23T15:51:18.619373Z'), ('deleted', False), ('name', 'Dessert'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)])])]), 'code': 200, 'message': None}
 

Я хочу подтвердить это с помощью моих данных сериализатора, которые возвращают мне список, который совпадает с одним списком в моем значении словаря ответов:

 [OrderedDict([('id', 1), ('uuid', '345cd6a7-69d2-4e35-808c-7bbfbee0ed66'), ('created_at', '2021-07-23T15:51:18.619102Z'), ('updated_at', '2021-07-23T15:51:18.619122Z'), ('deleted', False), ('name', 'Vegan'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)]), OrderedDict([('id', 2), ('uuid', 'e6a7ce08-259e-4a5b-bf96-2f311382b8ac'), ('created_at', '2021-07-23T15:51:18.619359Z'), ('updated_at', '2021-07-23T15:51:18.619373Z'), ('deleted', False), ('name', 'Dessert'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)])]
 

если бы я мог каким-то образом извлечь этот список из этого словаря, было бы здорово, любая помощь была бы признательна.

Комментарии:

1. Так тебе просто нужно data.results ?

Ответ №1:

Прямо из репл:

 >>> from collections import OrderedDict
>>> api = {'data': OrderedDict([('count', 2), ('next', None), ('previous', None), ('results', [OrderedDict([('id', 1), ('uuid', '345cd6a7-69d2-4e35-808c-7bbfbee0ed66'), ('created_at', '2021-07-23T15:51:18.619102Z'), ('updated_at', '2021-07-23T15:51:18.619122Z'), ('deleted', False), ('name', 'Vegan'),('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)]), OrderedDict([('id', 2), ('uuid', 'e6a7ce08-259e-4a5b-bf96-2f311382b8ac'), ('created_at', '2021-07-23T15:51:18.619359Z'), ('updated_at', '2021-07-23T15:51:18.619373Z'), ('deleted', False), ('name', 'Dessert'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)])])]), 'code': 200, 'message': None}
>>> api
{'data': OrderedDict([('count', 2), ('next', None), ('previous', None), ('results', [OrderedDict([('id', 1), ('uuid', '345cd6a7-69d2-4e35-808c-7bbfbee0ed66'), ('created_at', '2021-07-23T15:51:18.619102Z'), ('updated_at', '2021-07-23T15:51:18.619122Z'), ('deleted', False), ('name', 'Vegan'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)]), OrderedDict([('id', 2), ('uuid', 'e6a7ce08-259e-4a5b-bf96-2f311382b8ac'), ('created_at', '2021-07-23T15:51:18.619359Z'), ('updated_at', '2021-07-23T15:51:18.619373Z'), ('deleted', False), ('name', 'Dessert'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)])])]), 'code': 200, 'message':None}
>>> api['data']['results']
[OrderedDict([('id', 1), ('uuid', '345cd6a7-69d2-4e35-808c-7bbfbee0ed66'), ('created_at', '2021-07-23T15:51:18.619102Z'), ('updated_at', '2021-07-23T15:51:18.619122Z'), ('deleted', False), ('name', 'Vegan'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)]), OrderedDict([('id', 2), ('uuid', 'e6a7ce08-259e-4a5b-bf96-2f311382b8ac'), ('created_at', '2021-07-23T15:51:18.619359Z'), ('updated_at', '2021-07-23T15:51:18.619373Z'), ('deleted', False), ('name', 'Dessert'), ('address', ''), ('city', None), ('postal_code', None), ('country', None), ('phone', None), ('email', None)])]
 

Комментарии:

1. Спасибо за помощь, это было именно то, что мне было нужно.