На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > Python - сортировка по любому их трех значений
      Парсим лог и вытягиваем 2 значения:
      IP и количество переданных байт

      Это все сохраняю в словарь:
      {'IP' : {'sent':0, 'count':0}}

      Все выглядит красиво, но по сортировать по количеству обращений или количеству переданных байт нельзя, как сделать правильно?
        нужно что-то типа базы данных, что бы можно было делать выборку
          ordereddict?
            Цитата Мяут-Настоящий @
            ordereddict

            подробнее, пока ничего не нагуглил полезного
            Кроме как появился в 3.1 и делает упорядоченный словарь
              Ну так тебе же упорядоченный словарь и нужен, разве нет?
                Нужно сортировать, например, по самому большому количеству запросов (по count) или самый большой трафик (по значению sent)
                  пока склонился к sqlite в памяти
                    orb, ты даже про sorted() не знаешь? мде :)
                      расскажи подробнее как сделать сортед в моей ситуации
                        Мде...

                        ExpandedWrap disabled
                          from collections import OrderedDict
                           
                          D = {'192.168.0.1': {'sent':501, 'count': 2},
                               '192.168.0.2': {'sent':120, 'count': 5},
                               '192.168.1.3': {'sent':200, 'count': 3}}
                              
                          def print_dict(d):
                              for ip, data in d.items():
                                  print ip, data
                           
                          def sort_dict(d, criteria):
                              return OrderedDict(sorted(((k, v) for k, v in d.items()),
                                                        key=lambda i: i[1][criteria]))
                           
                          print 'SENT'                              
                          print_dict(sort_dict(D, 'sent'))
                           
                          print 'COUNT'
                          print_dict(sort_dict(D, 'count'))
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0249 ]   [ 16 queries used ]   [ Generated: 28.03.24, 19:51 GMT ]