Найти - Пользователи
Полная версия: Сортировка по времени
Начало » Python для новичков » Сортировка по времени
1
rieux
Нужно взять данные о времени, аккаунтах из файла и в порядке убывания вывести список аккаунтов, согласно времени. Файл такого вида:
nick;pass
'12:30', ‘22:01’
wusya;1234
'17:48', ‘12:34’
Вывод будет такой:
nick;pass
wusya;1234
wusya;1234
nick;pass
Как это можно реализовать ?
odnochlen
Тупой формат у файла.
fata1ex
Например так:
accounts = []
 
with open('in', 'r') as f:
    lines = f.read().splitlines()
    for account, times in zip(lines[::2], lines[1::2]):
        accounts.extend([(time.strip("' "), account) for time in times.split(',')])
 
for time, account in sorted(accounts):
    print account

Ну или покороче:
with open('in', 'r') as f:
    lines = f.read().splitlines()
    accounts = [(time.strip("' "), account) for account, times in zip(lines[::2], lines[1::2])
                                                 for time in times.split(',')]
 
for time, account in sorted(accounts):
    print account

Или так:
accounts = []
with open('in', 'r') as f:
    try:
        while True:
            account, times = f.next().strip(), f.next().strip()
            accounts.extend([(time.strip("' "), account) for time in times.split(',')])
    except StopIteration:
        pass
  
for time, account in sorted(accounts):
    print account

Соответственно, предвосхищая возможный вопрос, если формат даты или требования к сортировке меняются, вам нужно будет просто написать свою функцию сравнения и вставить её в sorted.
Nata
я учу питон по постам fata1ex; из них узнаешь больше чем из книжек :)
cutwater
Nata, хреново если так. Как вы думаете fata1ex питон учил? Да и большая часть местного населения тоже.

Уважаемому fata1ex вероятно еще не надоело печатать много текста, на однотипные вопросы.
Nata
я учу питон по постам fata1ex; из них узнаешь больше чем из книжек :)
его решения зачастую короче и оригинальнее моих;
а книжки нужно обязательно читать!


P.S. Если бы на свой первый нубский вопрос\пост я получила бы ответ: “на дибильные вопросы не отвечаем”, “иди погугли”, “за тебя делать ничего не будут” и т.д., это был бы мой последний визит на форум.
Зачем нужен раздел для новичков? Уберите его и сидите себе среди “экспертов”.
fata1ex
Nata, спасибо, но на этом форуме (а тем более в остальных интернетах) огромное количество людей, у которых есть чему поучиться (гораздо более полезному). Ещё, справедливости ради, надо отметить, что я постоянно посылаю в гугл и к учебнику английского, а так же уверен, что во многих случаях самый логичный ответ на просьбу “сделайте за меня” - именно “за тебя делать ничего не будут".

cutwater, камень в мой огород :) Надо как-то отвлекаться периодически, иногда бывает интересно.


This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB