Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2012 01:48:01

rieux
Зарегистрирован: 2012-07-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка по времени

Нужно взять данные о времени, аккаунтах из файла и в порядке убывания вывести список аккаунтов, согласно времени. Файл такого вида:

nick;pass
'12:30', ‘22:01’
wusya;1234
'17:48', ‘12:34’
Вывод будет такой:
nick;pass
wusya;1234
wusya;1234
nick;pass
Как это можно реализовать ?

Отредактировано rieux (Июль 6, 2012 01:48:44)

Офлайн

#2 Июль 6, 2012 02:50:01

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Сортировка по времени

Тупой формат у файла.

Офлайн

#3 Июль 6, 2012 08:40:50

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Сортировка по времени

Например так:

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.



Отредактировано fata1ex (Июль 6, 2012 11:47:53)

Офлайн

#4 Июль 6, 2012 11:09:06

Nata
От:
Зарегистрирован: 2010-10-02
Сообщения: 87
Репутация: +  6  -
Профиль   Отправить e-mail  

Сортировка по времени

я учу питон по постам fata1ex; из них узнаешь больше чем из книжек :)



Офлайн

#5 Июль 6, 2012 13:24:48

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Сортировка по времени

Nata, хреново если так. Как вы думаете fata1ex питон учил? Да и большая часть местного населения тоже.

Уважаемому fata1ex вероятно еще не надоело печатать много текста, на однотипные вопросы.



Офлайн

#6 Июль 6, 2012 15:19:17

Nata
От:
Зарегистрирован: 2010-10-02
Сообщения: 87
Репутация: +  6  -
Профиль   Отправить e-mail  

Сортировка по времени

я учу питон по постам fata1ex; из них узнаешь больше чем из книжек :)
его решения зачастую короче и оригинальнее моих;
а книжки нужно обязательно читать!


P.S. Если бы на свой первый нубский вопрос\пост я получила бы ответ: “на дибильные вопросы не отвечаем”, “иди погугли”, “за тебя делать ничего не будут” и т.д., это был бы мой последний визит на форум.
Зачем нужен раздел для новичков? Уберите его и сидите себе среди “экспертов”.



Офлайн

#7 Июль 6, 2012 15:38:13

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Сортировка по времени

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

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




Отредактировано fata1ex (Июль 6, 2012 15:38:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version