0

Я новичoк в Python, помогите решить задачу, застрял У вас есть информация по пользователям, которая хранится в users_info. Каждый элемент списка — это словарь с данными пользователя.

Выведите имена и id всех пользователей, удовлетворяющих следующему условию: возраст больше 35 лет, в браке и без детей.

users_info = [
  {'id': 111, 'name': 'Ирина', 'age': 40, 'has_children': False, 'is_married': True}, 
  {'id': 121, 'name': 'Надежда', 'age': 20, 'has_children': False, 'is_married': False},
  {'id': 131, 'name': 'Степан', 'age': 21, 'has_children': False, 'is_married': False},
  {'id': 141, 'name': 'Константин', 'age': 65, 'has_children': True, 'is_married': False},
  {'id': 151, 'name': 'Мария', 'age': 52, 'has_children': True, 'is_married': True},
  {'id': 161, 'name': 'Валерия', 'age': 38, 'has_children': False, 'is_married': False},
  {'id': 171, 'name': 'Александр', 'age': 29, 'has_children': True, 'is_married': True},
]
strawdog
  • 25,888

3 Answers3

2

Я никогда не изучал Python, но с помошь знания других языков я пришёл к этому решению:

for val in users_info:
    if val['age'] > 35 and val['has_children'] == False and val['is_married'] == True :
        print(val)
0xdb
  • 51,614
Miha
  • 3,558
  • лучше заменить val['age'] на val.get('age') и так же сделать с остальными это не ошибка просто val['age'] используется когда в словаре точно будет этот ключ – aqua Feb 16 '22 at 15:41
  • Спасибо, помогло! – Алексей Мугуев Feb 16 '22 at 15:42
  • @АлексейМугуев если этот ответ ответил на ваш вопрос отметьте его полезным – aqua Feb 16 '22 at 15:43
1

Пройдитесь по телу массива обращаясь к ключам

print('\n'.join([f"id : {i.get('id')} Имя : {i.get('name')}" for i in users_info if i.get('age') > 35 and not(i.get('has_children')) and i.get('is_married')]))
aqua
  • 441
  • Спасибо за совет, но в Вашем случае выдает неверное ID. В любом случае благодарю, постараюсь разобраться как исправить – Алексей Мугуев Feb 16 '22 at 15:45
  • Такой вопросикm а что делает join?) из любопытсво, лень искать) – Miha Feb 16 '22 at 15:45
  • @ПростаMiha в таком случае объясню своими словами метод join переводит список в строку с разделителем который указывается в ' ' – aqua Feb 16 '22 at 15:52
0
from operator import itemgetter

print(*[itemgetter('id', 'name')(j) for j in [i for i in users_info if (i.get('age') > 35 and i.get('has_children') ==
                    False and i.get('is_married') ==True)]])

>>> 
(111, 'Ирина')
D.Vinogradov
  • 1,411
  • 8
  • 19