Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
29 / 24 / 5
Регистрация: 15.10.2019
Сообщений: 268

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

12.02.2020, 16:08. Показов 2010. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
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. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru