Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2018, 09:20   #1
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию Python KeyError: '4'

Здраствуйте, помогите пожалуйста разобраться с заданием.
Задание:
часть1: Пусть список студентов представлен в виде структуры [[№, ФИО, Возраст, Группа],[№, ФИО, Возраст, Группа],[№, ФИО, Возраст, Группа]]. Преобразуйте список в словарь вида: {№: [ФИО, Возраст, Группа], №:[....], №:[....]}
часть2: добавьте к пользовательскому интерфейсу из задачи выше возможность вывода из словаря(без его преобразования в список):
Список студентов(а также информацию о них) с фамилией "Иванов"
код который уже написан с попыткой решения второй части:
Код:
lst=[[1,'Muratova Rezeda Rahipovna',20,445],[2,'Gavnetdinova Diana',20,445],[3, 'Yalalova Andgela',21,445],[4,'Ivanov Petr',20,445]]
d={}
for i in lst: d[i[0]] = i[1:]
print(d)
print('Введите номер стуента из списка: ',end='')
for i in d:
    print(i,end='')
print()
number = input ()
print('Студент имеет', d[number], 'данные')
 
print(d)
Я ввожу номер из списка, но он после выводит ошибку (хотя по идее лучше фамилию)
Код:
{1: ['Muratova Rezeda Rahipovna', 20, 445], 2: ['Gavnetdinova Diana', 20, 445], 3: ['Yalalova Andgela', 21, 445], 4: ['Ivanov Petr', 20, 445]}
Введите номер стуента из списка: 1234
4
Traceback (most recent call last):
  File "C:/учеба/mdk02.01/8/9.доп.py", line 12, in <module>
    print('Студент имеет', d[number], 'данные')
KeyError: '4'
 
Process finished with exit code 1
РезедаМуратова вне форума Ответить с цитированием
Старый 14.09.2018, 09:27   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

'4' это строка, а не число.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.09.2018, 09:37   #3
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Вот если со строкой:
Код:
lst=[[1,'Muratova Rezeda Rahipovna',20,445],[2,'Gavnetdinova Diana',20,445],[3, 'Yalalova Andgela',21,445],[4,'Ivanov Petr',20,445]]
d={}
for i in lst: d[i[0]] = i[1:]
print(d)
print('Введите номер стуента из списка: ',end='')
for i in d:
    print(i,end='')
print()
number = int(input())
print('Студент имеет', d[number], 'данные')

print(d)

а как если вводить фамилию и он выводил сех с этой фамилией + с данными?
Код:
lst=[[1,'Muratova Rezeda Rahipovna',20,445],[2,'Gavnetdinova Diana',20,445],[3, 'Yalalova Andgela',21,445],[4,'Ivanov Petr',20,445],[5,'Ivanov Petr',21,445]]
d={}
for i in lst: d[i[0]] = i[1:]
print(d)

print('Введите фамилию стуента из списка: ',end='')
name='Ivanov'
for i in d:
    if[i]==name:
     print(i,end='')
print()
number = int(input())

print('Студент имеет', d[number], 'данные')

print(d)
тут ошибку выводит. Как исправить?
РезедаМуратова вне форума Ответить с цитированием
Старый 14.09.2018, 09:42   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так фамилия это не число, вот и ошибка.

Тут же ключи словаря их номера, а не фамилии.

Для поиска по фамилиям надо проходить все, доставать из ФИО фамилию и т.д.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.09.2018, 09:54   #5
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Это как?
РезедаМуратова вне форума Ответить с цитированием
Старый 14.09.2018, 10:26   #6
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Как осуществить поиск по фамилии?
РезедаМуратова вне форума Ответить с цитированием
Старый 14.09.2018, 10:28   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Для поиска по фамилиям надо проходить все, доставать из ФИО фамилию и т.д.
↑↑↑
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документации, учебники, уроки и полезные материалы по Python, PyQt, PySide pompiduskus Python 4 22.07.2022 10:16
Python Erke1599 Помощь студентам 1 18.05.2018 09:51
Начальный уровень Python. Функции - Python YYYUUU Python 5 09.06.2017 12:09
из Python в C++ gio1592 Общие вопросы C/C++ 0 09.04.2012 14:52
Python Astron Свободное общение 1 31.03.2010 23:11