29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268

Непрерывный ввод словарей

12.02.2020, 16:08. Показов 2018. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть у меня задачка.

Составить функцию, которая принимает произвольное число параметров - участников исследования, каждый из которых является словарем с набором ключей и значений. Ключи - рост, участник, вес, город.
Функция должна возвращать трех участников тестирования в произвольном порядке, у которых самый низкий индекс массы тела.
Этот индекс рассчитывается по формуле: вес / рост ^ 2 * 100 %


ввожу словари я вот так:
{'Рост': "180", "Участник": "Бушин Слава", 'Вес': "63", 'Город': "Москва"}
{'Рост': "187", "Участник": "Даниил Бирюков", 'Вес': "84", 'Город': "Питер"}
{'Рост': "170", "Участник": "Алиев Петр", 'Вес': "67", 'Город': "Рязань"}
{'Рост': "175", "Участник": "Алиев Petр", 'Вес': "97", 'Город': "Рязань"}

моя программа:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys
 
lol = {'Рост': "180", "Участник": "Бушин Слава", 'Вес': "63", 'Город': "Москва"}
lo = {'Рост': "187", "Участник": "Даниил Бирюков", 'Вес': "84", 'Город': "Питер"}
lool = {'Рост': "170", "Участник": "Алиев Петр", 'Вес': "67", 'Город': "Рязань"}
look = {'Рост': "175", "Участник": "Алиев Petр", 'Вес': "97", 'Город': "Рязань"}
 
a = [lol, lo, lool, look]
data = list(map(str.strip, sys.stdin))
 
 
def milk(people):
    index_mass = []
    for i in people:
        mas = int(i['Вес']) / int(i['Рост']) ** 2 * 100
        index_mass.append(f'{i["Участник"]} {mas}')
    index_mass = sorted(index_mass, key=lambda x: x.split()[-1])
    return index_mass[:3]
 
 
print(milk(data))
Если словари я создаю в коде и добавляю в список - работает, вроде, но если через ввод - нефига.
Помогите пожалуйста.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2020, 16:08
Ответы с готовыми решениями:

Поиск по списку словарей и вывод списка словарей
У меня есть список словарей, например: data= Как мне вывести этот список, чтобы каждый словарь был на каждой отдельной строке,...

DateTimePicker, непрерывный ввод
есть поле dateTimePicker, когда осуществляешь ввод в данном поле нужно ввести для начала день, потом ввести месяц и ввести год.... а можно...

Непрерывный ввод массива
Доброе время суток, подскажите, как реализовать программку заполнения массива, так, что бы между элементами не нужно было нажимать Enter,...

7
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
13.02.2020, 07:42  [ТС]
Можно ли словарь сразу вводить? Или нужно его как то построчно создавать? По ключам?
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
13.02.2020, 08:49
billy121, словари сразу вводить нельзя.
Можно извернуться через json (читайте про модуль в интернете).
Можно вводить словари (это все еще будет обычная строка) и написать парсер для ввода, результатом котором будет объект dict.
0
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
13.02.2020, 08:53  [ТС]
ioprst, а можно поподробнее про парсер? пример оформления
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
13.02.2020, 09:46
Лучший ответ Сообщение было отмечено billy121 как решение

Решение

Проще с json.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding: utf-8 -*-
 
import json
 
json_strings = '''\
{"Рост": "180", "Участник": "Бушин Слава", "Вес": "63", "Город": "Москва"}
{"Рост": "187", "Участник": "Даниил Бирюков", "Вес": "84", "Город": "Питер"}
{"Рост": "170", "Участник": "Алиев Петр", "Вес": "67", "Город": "Рязань"}
{"Рост": "175", "Участник": "Алиев Petр", "Вес": "97", "Город": "Рязань"}'''
 
lst = [json.loads(line) for line in json_strings.split('\n')]
for item in lst:
    print(type(item), item)
 
# output
<class 'dict'> {'Рост': '180', 'Участник': 'Бушин Слава', 'Вес': '63', 'Город': 'Москва'}
<class 'dict'> {'Рост': '187', 'Участник': 'Даниил Бирюков', 'Вес': '84', 'Город': 'Питер'}
<class 'dict'> {'Рост': '170', 'Участник': 'Алиев Петр', 'Вес': '67', 'Город': 'Рязань'}
<class 'dict'> {'Рост': '175', 'Участник': 'Алиев Petр', 'Вес': '97', 'Город': 'Рязань'}
Парсеры писать не так и просто. Можно воспользоваться встроенными средствами
Python
1
2
3
4
5
from ast import literal_eval
 
lst = [literal_eval(line) for line in json_strings.split('\n')]
for item in lst:
    print(type(item), item)
1
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
13.02.2020, 09:49  [ТС]
ioprst, а что бы ввод с клавиатуры был, вот так можно?
Python
1
2
3
4
5
import sys
import json
 
 
json_strings = (map(str.strip, sys.stdin)
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
13.02.2020, 09:51
billy121, пробуйте)
Я бы советовал использовать вариант с literal_eval, он не будет ругаться, если у вас в словаре будут использованы одинарные кавычки.
1
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268
13.02.2020, 10:02  [ТС]
хотя, дичь какую - то написал

Добавлено через 1 минуту
ioprst, ща все испробуем, что сможем

Добавлено через 9 минут
ioprst, все получилось) спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2020, 10:02
Помогаю со студенческими работами здесь

Про непрерывный ввод с клавиатуры
При обработке ввода с клавиатуры, если использовать обычный EVT_KEY_DOWN, то ввод получается прерывистым - действие, короткая пауза и...

Как прочитать в список непрерывный ввод?
Я пробую sys.stdin.read() , но при попытке пройтись циклом по элементам, цикл проходит по каждому символу. Как сделать так, чтобы элементом...

Не работает непрерывный ввод на андроид клавиатуре
Народ помогите купил micromax q415 на нем стоит андроид 5.1.1 и в стандартной андроид клавиатуре не работает непрерывны ввод хотя в...

Организовать непрерывный ввод цифр с клавиатуры
Организовать непрерывный ввод цифр с клавиатуры. После введения числа, написать четное число или нечетное. При введении 0 закончить работу...

Ввод с клавиатуры данных в список, состоящий из словарей заданной структуры
Использовать словарь, содержащий следующие ключи: фамилия и инициалы; номер группы; успеваемость (список из пяти элементов). Написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru