#json #python-3.x #parsing #duplicates #key-value
Вопрос:
Извините за вопрос новичка, есть такой ответ json;
import json
jsonObj = json.loads("""
{
"data": [
{
"name_space": "name",
"value": "Angelina"
},
{
"name_space": "surname",
"value": "Jolie"
},
{
"name_space": "year",
"value": "1975"
}
]
}
""")
и в настоящее время я могу анализировать этот способ
for meta in jsonObj['data']:
if meta['name_space'] == 'name':
print(meta['value'])
if meta['name_space'] == 'surname':
print(meta['value'])
if meta['name_space'] == 'year':
print(meta['value'])
Я изучаю, существуют ли различные способы сделать это и сделать код более чистым или простым.
Комментарии:
1. Всегда ли в словарях данных есть запись «пространство имен» или запись «значение»? Указывает ли вам «пространство имен», какие другие значения доступны в диктанте?
2. Что вы пытаетесь напечатать?
for meta in jsonObj['data']: print(meta['value'])
напечатал бы то же самое, что вы печатаете в своем примере. Если вы хотите чего-то другого, включите это в свой вопрос.3. Почти ~30 словарей данных «пространство имен» или «значение» и несколько аналогичных, например, я хочу использовать
year
значение для получения1975
Ответ №1:
clean_dict = {x['name_space']: x['value'] for x in jsonObj['data']}
дал бы вам следующее dict
:
{'name': 'Angelina', 'surname': 'Jolie', 'year': '1975'}
Этот код использует x['name_space']
значение в качестве ваших новых ключей в dict
.
Тогда вы сможете распечатать его так, как вам захочется, например print(clean_dict.values())
.
Комментарии:
1. можно ли получить
'value'
значение, используя'name_space'
значение?2.
clean_dict['name']
дал бы тебе"Angelina"
, если ты это имеешь в виду.3. Идеально! Спасибо вам 🙂