#python #dictionary
#python #словарь
Вопрос:
Я новичок в концепции словаря в Python. У меня есть этот текущий словарь, который содержит другой словарь :
{
"count" : 3,
"document_type" : "list",
"documents" : [
{
"adminc_id" : "5d834741f1e79df70494d614",
"archived" : false,
"company_code" : "AAAAAA",
"created_at" : "2020-09-16T13:07:54.482000 00:00",
"customer_label" : "pomme",
"customer_ref" : "fruit",
"delivered_at" : "2018-11-07T00:00:00 00:00",
"document_type" : "service",
"state" : "delivered",
"subscribed_at" : "2018-11-07T00:00:00 00:00",
"tag" : "EX46V4YQ",
"techc_id" : "5d834741f1e79df70494d614",
"type" : "energy",
"updated_at" : "2020-09-16T13:07:54.482000 00:00"
},
{
"adminc_id" : "5f6e162958becabad3b64047",
"archived" : false,
"company_code" : "BBBBBB",
"created_at" : "2020-09-25T16:18:05.807000 00:00",
"document_type" : "service",
"state" : "subscribed",
"tag" : "T94893JQ",
"techc_id" : "5f6e162958becabad3b64047",
"type" : "telephony",
"updated_at" : "2020-09-25T16:18:05.807000 00:00"
},
{
"adminc_id" : "5f62071fa6dbcad5bf20d832",
"archived" : false,
"company_code" : "AAAAAA",
"created_at" : "2020-09-25T16:15:27.590000 00:00",
"document_type" : "service",
"state" : "subscribed",
"tag" : "TV47X3XQ",
"techc_id" : "5f62071fa6dbcad5bf20d832",
"type" : "telephony",
"updated_at" : "2020-09-25T16:15:27.590000 00:00"
}
],
"limit" : 50,
"offset" : 0
}
Я пытаюсь вернуть словарь documents
со значением ключей «tag» и «company_code». Я попытался извлечь документ словаря с помощью dict.get(‘document’), но результат возвращается с квадратной скобкой, которая, похоже, не является словарным форматом :
[
{
"adminc_id" : "5d834741f1e79df70494d614",
"archived" : false,
"company_code" : "AAAAAA",
"created_at" : "2020-09-16T13:07:54.482000 00:00",
"customer_label" : "pomme",
"customer_ref" : "fruit",
"delivered_at" : "2018-11-07T00:00:00 00:00",
"document_type" : "service",
"state" : "delivered",
"subscribed_at" : "2018-11-07T00:00:00 00:00",
"tag" : "EX46V4YQ",
"techc_id" : "5d834741f1e79df70494d614",
"type" : "energy",
"updated_at" : "2020-09-16T13:07:54.482000 00:00"
},
{
"adminc_id" : "5f6e162958becabad3b64047",
"archived" : false,
"company_code" : "BBBBBB",
"created_at" : "2020-09-25T16:18:05.807000 00:00",
"document_type" : "service",
"state" : "subscribed",
"tag" : "T94893JQ",
"techc_id" : "5f6e162958becabad3b64047",
"type" : "telephony",
"updated_at" : "2020-09-25T16:18:05.807000 00:00"
},
{
"adminc_id" : "5f62071fa6dbcad5bf20d832",
"archived" : false,
"company_code" : "AAAAAA",
"created_at" : "2020-09-25T16:15:27.590000 00:00",
"document_type" : "service",
"state" : "subscribed",
"tag" : "TV47X3XQ",
"techc_id" : "5f62071fa6dbcad5bf20d832",
"type" : "telephony",
"updated_at" : "2020-09-25T16:15:27.590000 00:00"
}
]
Я не знаю, как управлять форматом квадратных скобок, мне нужно получить этот результат в конце :
{
"company_code" : "AAAAAA",
"tag" : "EX46V4YQ"
},
{
"company_code" : "BBBBBB",
"tag" : "T94893JQ"
},
{
"company_code" : "AAAAAA",
"tag" : "TV47X3XQ",
}
Может кто-нибудь любезно помочь мне понять, как это работает? Спасибо.
С наилучшими пожеланиями.
Комментарии:
1. «Формат квадратных скобок» означает, что ваш результат представляет собой список , который также является тем, что
yourdict["documents"]
есть. В Интернете вы можете найти кучу хороших руководств по использованию списков.2.
documents
Запись не является словарем. Это список словарей. Помните:[...]
это список, а{...}
это словарь (или набор).
Ответ №1:
Словарь в python — одна из самых важных вещей, с которыми вам действительно нужно связаться с точки зрения структуры данных в Python
Если вы хотите извлечь определенное значение из вложенного словаря, вы можете использовать термин двумерной границы.
Например,
books = {"recipes": {"blt": ["bacon", "lettuce", "tomato", "bread"],
"beans_on_toast": ["beans", "bread"],
"scrambles eggs": ["eggs", "butter", "milk"],
"soup": ["tin of soap"],
"pasta": ["pasta", "cheese"]},
"maintenance": {"stuck": ["oil"],
"loose": ["gaffer tape"]}}
print(books["recipes"]["soup"])
print(books["recipes"]["scrambles eggs"])
print(books["maintenance"]["loose"])
Этот book
словарь сложный disc
. Если вы хотите получить доступ к вложенному ключу одного из его значений, вам нужно будет использовать термин двумерной границы.
После отладки это будет результат:
['tin of soap']
['eggs', 'butter', 'milk']
['gaffer tape']
Вы также можете проверить эти ссылки на Github для получения дополнительных функций и примеров о словаре и структуре данных в целом в python;
Ответ №2:
Решение:
Этот фрагмент кода может решить вашу проблему:
in_dict = {
"count" : 3,
"document_type" : "list",
"documents" : [
{
"adminc_id" : "5d834741f1e79df70494d614",
"archived" : False,
"company_code" : "AAAAAA",
"created_at" : "2020-09-16T13:07:54.482000 00:00",
"customer_label" : "pomme",
"customer_ref" : "fruit",
"delivered_at" : "2018-11-07T00:00:00 00:00",
"document_type" : "service",
"state" : "delivered",
"subscribed_at" : "2018-11-07T00:00:00 00:00",
"tag" : "EX46V4YQ",
"techc_id" : "5d834741f1e79df70494d614",
"type" : "energy",
"updated_at" : "2020-09-16T13:07:54.482000 00:00"
},
{
"adminc_id" : "5f6e162958becabad3b64047",
"archived" : False,
"company_code" : "BBBBBB",
"created_at" : "2020-09-25T16:18:05.807000 00:00",
"document_type" : "service",
"state" : "subscribed",
"tag" : "T94893JQ",
"techc_id" : "5f6e162958becabad3b64047",
"type" : "telephony",
"updated_at" : "2020-09-25T16:18:05.807000 00:00"
},
{
"adminc_id" : "5f62071fa6dbcad5bf20d832",
"archived" : False,
"company_code" : "AAAAAA",
"created_at" : "2020-09-25T16:15:27.590000 00:00",
"document_type" : "service",
"state" : "subscribed",
"tag" : "TV47X3XQ",
"techc_id" : "5f62071fa6dbcad5bf20d832",
"type" : "telephony",
"updated_at" : "2020-09-25T16:15:27.590000 00:00"
}
],
"limit" : 50,
"offset" : 0
}
Этот цикл будет перебирать словари, которые присутствуют внутри списка, как показано в вопросе:
for inner_dict in in_dict['documents']:
print(inner_dict)*
ВЫВОД:
{'adminc_id': '5d834741f1e79df70494d614', 'archived': False, 'company_code': 'AAAAAA', 'created_at': '2020-09-16T13:07:54.482000 00:00', 'customer_label': 'pomme', 'customer_ref': 'fruit', 'delivered_at': '2018-11-07T00:00:00 00:00', 'document_type': 'service', 'state': 'delivered', 'subscribed_at': '2018-11-07T00:00:00 00:00', 'tag': 'EX46V4YQ', 'techc_id': '5d834741f1e79df70494d614', 'type': 'energy', 'updated_at': '2020-09-16T13:07:54.482000 00:00'}
{'adminc_id': '5f6e162958becabad3b64047', 'archived': False, 'company_code': 'BBBBBB', 'created_at': '2020-09-25T16:18:05.807000 00:00', 'document_type': 'service', 'state': 'subscribed', 'tag': 'T94893JQ', 'techc_id': '5f6e162958becabad3b64047', 'type': 'telephony', 'updated_at': '2020-09-25T16:18:05.807000 00:00'}
{'adminc_id': '5f62071fa6dbcad5bf20d832', 'archived': False, 'company_code': 'AAAAAA', 'created_at': '2020-09-25T16:15:27.590000 00:00', 'document_type': 'service', 'state': 'subscribed', 'tag': 'TV47X3XQ', 'techc_id': '5f62071fa6dbcad5bf20d832', 'type': 'telephony', 'updated_at': '2020-09-25T16:15:27.590000 00:00'}
** ПРИМЕЧАНИЕ: вы можете выбрать необходимые ключи с помощью inner_dict[KEY_NAME]
**