#python #arrays #json #python-3.x
Вопрос:
Я пытаюсь сохранить два варианта запуска в Json. Моя попытка такова, как показано ниже. Является ли это разумным способом организации объекта Json? Кроме того, как я могу прочитать любой из них в кортежи? tuple([(item['opt_one'],item['val_one']) for item in config['opts']])
Я пытался, но получил ключевую ошибку. Большое спасибо за вашу помощь.
"opts":[
{
"opt_one": "one_option",
"val_one" : "value_one"
},
{
"opt_two": "two_option",
"val_two" : "value_two"
}
]
Ответ №1:
# or it can be done in 1 line
print(tuple(map(lambda v: tuple(v.values()), J['opts'])))
Комментарии:
1. большое спасибо. Но как я могу также прочитать любой из них, например, только opt_two и val_two в кортеж?
2. opts — это список словарей. Каждый словарь имеет индекс (начинающийся с 0). В каждом словаре есть ключи() или значения() или оба — элемента(). J[‘opts’][0] и J[‘opts’][1] являются 2 словарями.
Ответ №2:
import json
j = """
{"opts":[
{
"opt_one": "one_option",
"val_one" : "value_one"
},
{
"opt_two": "two_option",
"val_two" : "value_two"
}
]
}
"""
# note the braces around "opts"
J = json.loads(j) #turns it into a python object
print(J) #see!
# the long way to do it, but you can see the process
R = []
for item in J['opts']:
r = []
for v in item.values():
r.append(v)
R.append(tuple(r))
print(tuple(R)) # solution