Доступ к списку в словаре через Python из файла JSON

#python #json

#python #json

Вопрос:

Я новичок в Python и мог бы воспользоваться некоторой помощью, пожалуйста. Я пытаюсь использовать Python для чтения из моего файла JSON и получения значений списка внутри в словаре.

Как только я прочитал JSON в своей программе, у меня есть:

 request body = {
  "providerName": "ProviderNameXYZ",
  "rateRequestPayments": [
    {
      "amount": 128.0,
      "creditorProfileId": "7539903942457444658",
      "debtorProfileId": "2072612712266192555",
      "paymentMethodId": "2646780961603748694016",
      "currency": "EUR",
      "userReference": "INVALID user ref automation single",
      "reconciliationId": "343546578753349"
    },
    {
      "amount": 129.0,
      "creditorProfileId": "7539903942457444658",
      "debtorProfileId": "2072612712266192555",
      "paymentMethodId": "2646780961603748694016",
      "currency": "EUR",
      "userReference": "INVALID user ref automation single",
      "reconciliationId": "343546578753340"
    }
  ]
}
  
  1. Теперь я хочу иметь возможность получать значение любого конкретного ключа.
    Я пытался получить к нему доступ несколькими маршрутами:
  • rateRequestPayments[0].amount
  • rateRequestPayments()[0].amount
  • for k, v in request_body.rateRequestPayments(): print(k, v)
  • for each in request_body.rateRequestPayments: print(each('amount'))
  • values = eval(request_body['rateRequestPayments']) print(values[0]) Все это заканчивается ошибками. Согласно второму комментарию ниже: request_body['rateRequestPayments'][0]['amount'] Это работает!
  1. Я также хочу иметь возможность удалять всю пару ключ-значение («amount»: 128,0,) из request_body. request_body['rateRequestPayments'][0]['amount'] для этого не работает. Не уверен, как ссылаться на это.

Я знаю, что мне не хватает чего-то простого, но я просто не уверен, что это такое. Любая помощь была бы высоко оценена.

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

1. Не могли бы вы включить свой JSON-файл в ответ на вопрос, пожалуйста?

2. Вы пробовали request_body['rateRequestPayments'][0]['amount']

3. ваш dict неверен, ключи не могут быть продублированы.

4. request_body[‘Процентные платежи по запросу’][0][‘сумма’] сработало! Спасибо!!!!

5. Я пытаюсь также использовать request_body[‘rateRequestPayments’][0][‘amount’] для ссылки на ключ. Я хочу удалить эту строку «amount»: 128.0,’ из моего request_body. Но это не работает. Это выдает мне:»KeyError: «[‘rateRequestPayments’][0][‘amount’]»». Не уверен, как ссылаться на всю пару ключ / значение вместо самого значения?

Ответ №1:

Python отлично подходит для науки о данных и обладает множеством функций, которые делают его пригодным для этой работы. Одной из таких функций является поиск данных в наборе данных. body['rateRequestPayments'][<!WHICH DATA SET YOU WANT TO ACCESS>][<!VALUE YOU WANT TO FIND>]

Ответ №2:

Сначала вам нужно будет поставить знак подчеркивания между requests и body , чтобы это requests_body = {...} было.

Для доступа к паре ключ-значение:

 requests_body["rateRequestPayments"] #to access the list of two dicts
requests_body["rateRequestPayments"][0] #to access the individual dicts by index
requests_body["rateRequestPayments"][0]["amount"] #to access the value of a particular key (in this case "amount" is the key)
  

Чтобы удалить пару ключ-значение, просто используйте del инструкцию:

 del requests_body["rateRequestPayments"][0]["amount"]
  

Это приведет к удалению пары ключ-значение в переменной requests_body , поэтому повторная попытка доступа к этому ключу вызовет KeyError ошибку.

Чтобы получить доступ к и удалить пару ключ-значение, используйте .pop() :

 value = requests_body["rateRequestPayments"][0].pop("amount")
#value is now 128.0 and the key-value pair is deleted