Вложенный список: Count, Max и Min - PullRequest
0 голосов
/ 16 мая 2018

У меня есть вложенный список:

data = [[12345678, 14, 1],[135763365, 14, 0],[135763365, 12, 0],[1234, 9, 0]]

, где я хочу найти максимальный индекс 1 из всех подсписков.

Для этого я создал эту функцию:

def findBusiestPeriod ():
    result = max([item[1] for item in data])
    counter = collections.Counter(itertools.chain(*data))
    if counter[result] > 2:
       # Here's where I want to find the smallest index[0] based on 
       # the max index[1]

    return result

Как только у меня будет максимальный индекс 1 в списке, я хочу проверить, есть ли дубликаты (там естьв примере.) Если есть дубликаты, я хочу вернуть только подсписок с наименьшим индексом 0.

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Поскольку кто-то уже показал параметр key функции sorted, я хочу упомянуть, что функции min и max также имеют параметр key.

min(data, key=lambda x: (-x[1], x[0]))
0 голосов
/ 16 мая 2018

sorted() может сделать это с помощью клавиши, например:

Код:

sorted(data, key=lambda x: (-x[1], x[0]))[0]

Код теста:

data = [[12345678, 14, 1], [135763365, 14, 0],
        [135763365, 12, 0], [1234, 9, 0]]

print(sorted(data, key=lambda x: (-x[1], x[0]))[0])

Результаты:

[12345678, 14, 1]
...