5

Преобразование словаря в JSON

17

У меня возникла проблема с доступом к данным в формате JSON. Вот мой код:

r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))

Я получаю следующую ошибку:

TypeError: string indices must be integers, not str

Что я делаю не так? Как я могу правильно получить значение рейтинга из JSON?

3 ответ(ов)

0

Вы можете создать вложенный словарь в приведённом выше примере, объявив новый словарь внутри словаря по умолчанию.

import json

dictionary = {
    'fruit': {"Grapes": "10", "color": "green"},
    'vegetable': {"chilli": "4", "color": "red"},
}

result = json.dumps(dictionary, indent=3)

print(result)

В данном примере я использовал аргумент indent=3 для форматирования вывода в читаемом виде с отступами.

Ссылка: https://favtutor.com/blogs/dict-to-json-python

0

Нет необходимости преобразовывать значения в строку с помощью json.dumps(). Вы можете получить их прямо из объекта словаря. Вот так:

r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))

Однако, если вы хотите записывать эти значения в файл, вы можете использовать метод str() для преобразования rating, как вы уже делаете, но для is_claimed это не обязательно, так как оно уже строкового типа. Таким образом, код будет выглядеть так:

r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])  # 'is_claimed' уже строка
file.write(str(r['rating']))  # преобразуем 'rating' в строку

Если потребуется, вы также можете использовать f-строки или str.format() для более читабельной записи в файл.

0

Определение переменной r как словаря должно решить задачу:

>>> r: dict = {'is_claimed': 'True', 'rating': 3.5}
>>> print(r['rating'])
3.5
>>> type(r)
<class 'dict'>

Если у вас возникнут дополнительные вопросы по работе со словарями, не стесняйтесь спрашивать!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь