Как я могу распечатать привет и всех участниц женского пола

#python #json

Вопрос:

тест.json

 {
    "A Company":[{"female":["Jessica","Eve"]},{"male":["Mike","Peter"]}],
    "B Company":[{"female":["Laura","Pamela"]},{"male":["Mark","Steve"]}]
}
 

test.py

 import json

f = open('test.json',)
data = json.load(f)
for v in data.values():
    for element in v:
        print(element)
 

Выход:

 {'female': ['Jessica', 'Eve']}
{'male': ['Mike', 'Peter']}
{'female': ['Laura', 'Pamela']}
{'male': ['Mark', 'Steve']}
 

Как я могу напечатать это: «Привет, Джессика», «Привет, Ева», «Привет, Лора», «Привет, Памела»?

Комментарии:

1. Что вы пробовали и что пошло не так с вашими попытками?

2. Повторите все сначала element.get('female', []) .

Ответ №1:

Вы можете использовать итератор для извлечения имен затем и цикл для печати приветствий без создания промежуточного списка:

 data = {
    "A Company":[{"female":["Jessica","Eve"]},{"male":["Mike","Peter"]}],
    "B Company":[{"female":["Laura","Pamela"]},{"male":["Mark","Steve"]}]
}

names = (name for groups in data.values() 
              for group in groups 
              for name in group.get("female",[]))


for name in names: print("Hello",name)

Hello Jessica
Hello Eve
Hello Laura
Hello Pamela
 

Ответ №2:

Вы пропустили самый внутренний цикл, где вы повторяете внутренние записи и проверяете, являются ли они мужчинами или женщинами.

Пожалуйста, посмотрите пример:

 import json

json_file = """
{
    "A Company":[{"female":["Jessica","Eve"]},{"male":["Mike","Peter"]}],
    "B Company":[{"female":["Laura","Pamela"]},{"male":["Mark","Steve"]}]
}
"""

parsed = json.loads(json_file)

for val in parsed.values():
    for record in val:
        # This below is the innermost loop
        for key, value in record.items():
            # If it's female then we use list comprehension to print the greetings
            if key == "female":
                [print(f"Hello {name}") for name in value]

 

Комментарии:

1. Я бы предложил использовать обычный цикл for вместо понимания списка, так как вы просто генерируете список, который выбрасываете.