1. Python / Говнокод #11905

    −90

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    threadList = sorted(
        [
            (contr, contragents[contr])
            for contr in contragents
            if dateStart <= contragents[contr]["ts"] <= dateEnd and
                (lambda x: 1 if x else 0)(contragents[contr]["status"]) in status
        ],
        key=lambda sorted: sorted[1]["ts"], reverse=True
    )[loaded:loaded + 50]

    Тащемта, такой однострочник с коллегос сделали. Вроде бы и не говнокод, но что-то такое есть.

    Запостил: Miketsukami, 10 Октября 2012

    Комментарии (5) RSS

    • (contr, contragents[contr])
      for contr in contragents

      contragents - это нормальный dict или имитация? Если dict, то можно использовать dict.iteritems() для итерации по парам ключ-значение и filter для построения фильтрованного списка. Я бы все же разбил построение, сортировку и взятие диапазона на отдельные операции, но раз уж хочется одной строкой...
      threadList = sorted(
          filter(
              lambda contragent: (dateStart <= contragent["ts"] <= dateEnd) and
                  int(bool(contragents[contr]["status"])) in status,
              contragents.iteritems() 
              ),
          key=lambda sorted: sorted[1]["ts"], reverse=True
      )[loaded:loaded + 50]
      Ответить
      • Я бы еще подумал над status - может, стоит вставить туда True и False, а не 0 и 1?
        Но это уже за рамками данного кода.
        Ответить
      • Да, про iteritems не подумали даже. И про filter не вспомнили, поскольку его даже сам Гвидо недолюбливает.
        Ответить
    • Астрологи обьявили неделю питона на ГК?
      Ответить

    Добавить комментарий