Форум сайта python.su
0
Товарищи, здравствуйте. Что в этот код надо добавить, чтобы порядковые номера сохранялись как надо? Т.е, чтобы оставалось 1 2 3 4, а не каша. Подскажите пожалуйста
def get_data(line): data = line[line.rfind(' ') + 1:].split('.') return tuple(map(int, data))[::-1] with open('input.txt', 'r', encoding='utf-8') as f1, open("output.txt", 'w', encoding='utf-8') as f2: f2.write('\n'.join(sorted(f1.read().splitlines(), key=get_data)))
Прикреплённый файлы:
input.txt (199 байт)
Офлайн
857
Пришли файл вывода output.txt, который должен получиться из этого input.txt .
Офлайн
0
как-то так
Прикреплённый файлы:
output.txt (199 байт)
Офлайн
186
>>> f = """2. Ковалев А.В. 2000 ...: 5. Рамазанов А.Д. 2001 ...: 6. Рахимов И.Д. 2001 ...: 4. Боднарчук К.А. 2002 ...: 3. Николаев Н.А. 2003 ...: 1. Мирошников Р.Н 2004""" >>> sorted(f.split("\n"), key=lambda x: int(x.split('.')[0])) ['1. Мирошников Р.Н 2004', '2. Ковалев А.В. 2000', '3. Николаев Н.А. 2003', '4. Боднарчук К.А. 2002', '5. Рамазанов А.Д. 2001', '6. Рахимов И.Д. 2001']
Отредактировано Rodegast (Дек. 8, 2021 11:42:47)
Офлайн
0
Суть в другом. Мне нужно отсортировать список людей из 1 файла во 2 по году рождения, у меня все получилось, но порядковые номера остались с фамилиями, а надо, чтобы они остались на своих местах
Офлайн
857
calmmalakaiТы прислал файл output.txt сюда, в котором они не остаются на своих местах, а остаются с именами.
у меня все получилось, но порядковые номера остались с фамилиями, а надо, чтобы они остались на своих местах
1. Мирошников Р.Н 2000
2. Ковалев А.В. 2000
3. Николаев Н.А. 2003
4. Боднарчук К.А. 2002
5. Рамазанов А.Д. 2001
6. Рахимов И.Д. 2001
2. Ковалев А.В. 2000
5. Рамазанов А.Д. 2001
6. Рахимов И.Д. 2001
4. Боднарчук К.А. 2002
3. Николаев Н.А. 2003
1. Мирошников Р.Н 2004
1. Мирошников Р.Н 2000
2. Ковалев А.В. 2000
5. Рамазанов А.Д. 2001
6. Рахимов И.Д. 2001
4. Боднарчук К.А. 2002
3. Николаев Н.А. 2003
Отредактировано py.user.next (Дек. 8, 2021 21:35:19)
Офлайн
0
Запутал я вас, дико извиняюсь. Я сам перепутал файлы. Сейчас все нормально вставлю. Суть вот в чем. В этом списке, который написал сам, лежит список людей(порядковый номер, ФИО, год рождения), мне нужно отсортировать людей по году рождения
Прикреплённый файлы:
input.txt (199 байт)
Офлайн
0
У меня получилось, но порядковый номер прикреплен к человеку. Как сделать так, чтобы порядковый номер был фиксированным? т.е. чтобы так и осталось 1 2 3, а не был прикреплен к людям
Прикреплённый файлы:
output.txt (199 байт)
Офлайн
0
Опять не тот input кинул, чтож я такой невнимательный((
Прикреплённый файлы:
input.txt (199 байт)
Офлайн
857
calmmalakaiНичего не вставил нормально. Прислал какую-то муть опять.
Запутал я вас, дико извиняюсь. Я сам перепутал файлы. Сейчас все нормально вставлю.
1. Мирошников Р.Н 2004
2. Ковалев А.В. 2000
3. Николаев Н.А. 2003
4. Боднарчук К.А. 2002
5. Рамазанов А.Д. 2001
6. Рахимов И.Д. 2001
1. Ковалев А.В. 2000
2. Рамазанов А.Д. 2001
3. Рахимов И.Д. 2001
4. Боднарчук К.А. 2002
5. Николаев Н.А. 2003
6. Мирошников Р.Н 2004
>>> def f(text): ... lines = text.splitlines() ... lstripped = (i.split(' ', 1)[1] for i in lines) ... lsorted = sorted(lstripped, key=lambda i: int(i.rsplit(' ', 1)[1])) ... lenumerated = ('{}. {}'.format(n, s) ... for n, s in enumerate(lsorted, 1)) ... out = '\n'.join(lenumerated) + '\n' ... return out ... >>> itext = """\ ... 1. Мирошников Р.Н 2004 ... 2. Ковалев А.В. 2000 ... 3. Николаев Н.А. 2003 ... 4. Боднарчук К.А. 2002 ... 5. Рамазанов А.Д. 2001 ... 6. Рахимов И.Д. 2001 ... """ >>> >>> print(itext, end='') 1. Мирошников Р.Н 2004 2. Ковалев А.В. 2000 3. Николаев Н.А. 2003 4. Боднарчук К.А. 2002 5. Рамазанов А.Д. 2001 6. Рахимов И.Д. 2001 >>> >>> otext = f(itext) >>> >>> print(otext, end='') 1. Ковалев А.В. 2000 2. Рамазанов А.Д. 2001 3. Рахимов И.Д. 2001 4. Боднарчук К.А. 2002 5. Николаев Н.А. 2003 6. Мирошников Р.Н 2004 >>>
Офлайн