Форум сайта python.su
Здравствуйте. Перед мной стоит следующая задача: есть одна база данных с учениками в которой содержится ФИО и дата рождения. И есть импортируемый файл csv, в котором содержится информация об учениках, участвовавших в олимпиаде. При импорте файла запускается цикл сравнения ФИО учеников. В базе учеников могут содержаться ученики с одинаковыми ФИО. Поэтому и необходим алгоритм сравнения учеников на наличие двух одинаковых. Что бы оставить только одного ученика.
for idx, d in enumerate(student): for ids, s in enumerate(student): if d['Name'] == s['Name'] and idx != ids: print d,idx l=raw_input('input number to delete') student.pop(int(l)) for m in student: for k in olympiad: if m['Name']==k['Name']: this.append(k)
Отредактировано alexefremo (Июнь 22, 2013 20:51:04)
Офлайн
Не видно где вообще в этой задаче нужен пользовательский интерфейс. Удаление дублирующихся записей обычно делается средствами СУБД. Создайте для Ф.И.О. Уникальный составной ключик.
В вашем случае гораздо проще скинуть всех студентов в файл на построчной основе и почистить список текстовым редактором. Это будет и гораздо удобнее чем web интерфейс.
Офлайн
Абсолютно с вами согласен. Пользовательский интерфейс необходим для самостоятельного “выбора” какому ученику добавить запись. Уже существуют списки с олимпиадами без айдишников. Поэтому и необходимо такое решение проблемы.
Офлайн
Какого объема база и файлы с результатами олимпиады?
Офлайн
База состоит из учеников. 11 классов. по 4 параллели человек по 3. порядка 1000 записей. в запись ученика добавляется запись с олимпиадой. субд - MongoDB. Происходит сравнение с временной базой олимпиад в которых информация об ученике, его ФИО и дата рождения, и базой учеников, те же ФИО и дата рождения. Если эти значения равны в запись ученика добавляется информация об олимпиаде. Структура документа ученик:
{“ФИО”:“Петров Петр Петрович”
“Дата рождения”:“21.12.2002”
Олимпиады:[{
“Название”:“Олимпиада по русскому языку”,
“Баллов”:“60”,
“Место”:“”},
“Название”:“Олимпиада по немецкому языку”,
“Баллов”:“80”
“Место”:“1е”}]}
Офлайн
Допустим я могу передать данные, но для этого мне нужно получить другой темплейт, что выведет меня из цикла. Как мне получить это в цикле?
Офлайн