Добавить элементы к тегу в словаре json, используя python - PullRequest
0 голосов
/ 20 июня 2020

Как я могу добавить к json словарю файла определенное значение в его конкретный тег c.

{"dict": [
    {
     "tag": "adult",
     "name": ["John", "Elle"],
     "age": ["25", "23"],
    },
    {
     "tag": "elderly",
     "name": ["Mary", "Matthew"],
     "age": ["67", "80"],
}

Здесь, после того, как пользователь введет свое имя и возраст, чтобы найти способ добавить к json файлу в c теге (например, человек с именем « Стейси » возраста 29 должен быть добавлено только в « adult »

Таким образом, обновленное должно выглядеть так, если мы добавим, например, «Stacy» в возрасте «29» к тегу для взрослых:

{
     "tag": "adult",
     "name": ["John", "Elle", "Stacy"],
     "age": ["25", "23", "29"],
}

Ответы [ 3 ]

1 голос
/ 20 июня 2020

Есть ли причина, по которой вы превратили общее значение словаря в список, а не сохранили его в словаре. Если нет, я бы предложил что-то вроде этого:

dict = { "adult": { "name": ["John", "Elle"], "age": ["25", "23"] },  "elderly": { "name": ["Mary", "Matthew"], "age": ["67", "80"] }}

Теперь «взрослый» и «пожилой» являются ключами к словарю, где вы можете получить к ним доступ следующим образом:

dict["adult"] = { "name": ["John", "Elle"], "age": ["25", "23"] }
dict["elderly"] = { "name": ["Mary", "Matthew"], "age": ["67", "80"]}

И добавьте свой пример ситуации следующим образом:

dict["adult"]["name"].append("Stacy")
dict["adult"]["age"].append("29")

Что приводит к общему выводу dict:

dict = { "adult": { "name": ["John", "Elle","Stacy"], "age": ["25", "23","29"] },  "elderly": { "name": ["Mary", "Matthew"], "age": ["67", "80"] }}
0 голосов
/ 20 июня 2020

Для этого вам нужно перебрать список словарей, которые вы сохранили в данном json словаре. Если я предполагаю, что вы загрузили json в переменную с именем 'elements_dict', тогда вам нужно перебрать elements_dict ['dict'], чтобы получить доступ к элементу и выполнить необходимое. Поскольку вы не упомянули критерии возраста для классификации кого-то как взрослого, я предположил, что любой человек младше 50 может считаться взрослым :) и придумал следующий способ (это очень простое представление для вас, вы можете соответственно улучшить)

elements_dict = {"dict": [
    {
     "tag": "adult",
     "name": ["John", "Elle"],
     "age": ["25", "23"],
    },
    {
     "tag": "elderly",
     "name": ["Mary", "Matthew"],
     "age": ["67", "80"],
    }]
}

new_name = "Stacy"
new_age = "29"

for people in elements_dict['dict']:
    if people['tag'] == 'adult' and int(new_age) < 50:
        people['name'].append(new_name)
        people['age'].append(new_age)
    elif people['tag'] == 'elderly' and int(new_age) >= 50:
        people['name'].append(new_name)
        people['age'].append(new_age)

print(elements_dict)
0 голосов
/ 20 июня 2020

Вот код. Он находит словарь возрастной группы в массиве и добавляет имя и возраст к массивам в этом словаре. Вам нужно будет написать несколько if-тестов, чтобы выбрать правильную возрастную группу, если пользователь вводит только свой возраст.

dict = [
    { "tag": "adult", "name": ["John", "Elle"], "age": ["25", "23"], },
    { "tag": "elderly", "name": ["Mary", "Matthew"], "age": ["67", "80"], }
]

def appendUser (tag, name, age):
    for group in dict:
        if (group['tag'] == tag):
            group['name'].append(name)
            group['age'].append(age)

appendUser("adult", "Stacy", "29")
print(dict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...