Как получить список из словаря по ключу из JSON файла?

И снова обращаюсь за советом.
Есть файл JSON, оформленный в виде словаря:
JSON

{
  "key1": [
    "value1",
    "value2",
    "value3",
    "value4"
  ],"key2": [
    "value1",
    "value2",
    "value3",
    "value4"
  ]
}



Есть такой вот кусок кода, функция:
Функция с чтением JSON'а

import json

def ItemSelection():
    with open('file.json') as f:
        templates = json.load(f)
    for section, commands in templates.items():
        ListLenght = len(section[select])
        print("В данном разделе ",ListLenght,"значений")


Что-то не могу понять как вытащить полностью список из словаря...
Ключ должен по select = input() указываться пользователем.. Указываю точь в точь как в словаре - он не хочет вытягивать...

Ошибка в строке ListLenght = len(section[select])
string indices must be integers
Хотя вроде пытаюсь записать в переменную длину списка из секции (ключа) под определенным номером\индексом.
Что текстово указываю ключ, что индекс - без разницы..
  • Вопрос задан
  • 808 просмотров
Решения вопроса 2
chuikoalex
@chuikoalex
Викторович
templates = json.load(f) когда это строка выполнилась, то templates стал словарем полученным из файла (ну если упростить).
ListLenght = len(section[select]) у тебя же section это ключ ("key1", "key2"...), который ты достал из из templates, с помощью метода .items() а ты пытаешь работать с ним как со словарем.
Вместо:
for section, commands in templates.items():
        ListLenght = len(section[select])
        print("В данном разделе ",ListLenght,"значений")

просто:
print("В данном разделе ", len(templates[select]), "значений")
Ответ написан
Комментировать
@PugLord Автор вопроса
Всем спасибо за советы. Код получился сейчас вот такой:
Код

import random
import json

def ItemSelection():
    with open('items.json') as f:
        templates = json.load(f)
        ListLenght = len(templates[select])
        print("Значений в данном разделе:",ListLenght)
        ListOfItems = templates[select]
        random.shuffle(ListOfItems)
        selected_item = ListOfItems[1]
        print("И из этого множественного разнообразия, тебе выпадает:", selected_item)
    
    
print('Введите ключ что бы получить результат')
select = input('Ожидаю ввод: ')
ItemSelection()



Если есть конструктивная критика как его можно улучшить или выполнить более качественно - с радостью выслушаю)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы