#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"
}
]
}
- Теперь я хочу иметь возможность получать значение любого конкретного ключа.
Я пытался получить к нему доступ несколькими маршрутами:
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']
Это работает!
- Я также хочу иметь возможность удалять всю пару ключ-значение («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