Максимальное значение в списке списков кортежей

У меня возникла проблема получить наивысшее значение в динамическом списке списков кортежей.
Список может выглядеть следующим образом:

adymlist = [[('name1',1)],[('name2',2),('name3',1), ...('name10', 20)], ...,[('name m',int),..]] 

Теперь я просматриваю список, чтобы получить максимальное значение (целое число):

 total = {} y=0 while y < len(adymlist): if len(adymlist) == 1: #has the List only 1 Element -> save it in total total[adymlist[y][0][0]] = adymlist[y][0][1] y += 1 else: # here is the problem # iterate through each lists to get the highest Value # and you dont know how long this list can be # safe the highest Value in total fe total = {'name1':1,'name10':20, ..} 

Я много пытался, чтобы получить максимальную стоимость, но я не нашел никакого вывода о моей проблеме. Я знаю, что я должен прокручивать каждый Tuple в списке и сравнивать его со следующим, но он не знает, как правильно его закодировать.

Также я могу использовать функцию max() но она не работает со строками и целыми числами. fe a = [ ('a',5),('z',1)] -> результат max(a) ---> ('z',1) obv 5> 1, но z> a, поэтому я попробовал для расширения максимальной функции с max(a, key=int) но я получаю Type Error.

Надеюсь, ты сможешь понять, чего я хочу 😉

ОБНОВИТЬ

Спасибо, пока.

Если я использую itertools.chain(*adymlist) и max(flatlist, key=lambda x: x[1])
Я получаю исключение вроде: max_word = max (flatlist, key = lambda x: x [1]) TypeError: объект 'int' не подлежит подписке

НО Если я использую itertools.chain(adymlist) он отлично работает. Но я не знаю, как суммировать все целые числа из каждого кортежа из списка. Мне нужна ваша помощь, чтобы понять это.

В противном случае я написал обходной путь для itertools.chain(*adymlist) чтобы получить сумму всех целых чисел и наивысшее целое число в этом списке.

 chain = itertools.chain(*adymlist) flatlist = list(chain) # flatlist = string, integer, string, integer, ... max_count = max(flatlist[1:len(flatlist):2]) total_count = sum(flatlist[1:len(flatlist):2]) # index of highest integer idx = flatlist.index(next((n for n in flatlist if n == max_count))) max_keyword = flatlist[idx-1] 

Он все еще делает то, что я хочу, но разве это не грязно?

2 Solutions collect form web for “Максимальное значение в списке списков кортежей”

Чтобы уточнить, похоже, что у вас есть список списков кортежей. Не похоже, что мы заботимся о том, в каком списке они находятся, поэтому мы можем упростить это до двух шагов

  • Сгладить список списков в список кортежей
  • Найти максимальное значение

Первая часть может быть выполнена через itertools.chain (см., Например, « Сглаживание мелкого списка в Python» )

Вторая может быть решена с помощью max, у вас есть правильная идея, но вы должны передавать функцию, а не тип, который вы хотите. Эта функция должна вернуть значение, на которое вы наложили ключ, в этом случае вторая часть кортежа

 max(flatlist, key=lambda x: x[1]) 

коррекция

Я перечитываю ваш вопрос – вы ищете максимальное значение в каждом под-списке? Если это так, то применима только вторая часть. Просто перебирайте список по каждому списку

Чуть больше пифонов, чем то, что у вас сейчас есть.

 output = [] for lst in lists: output.append( max(flatlist, key=lambda x: x[1]) ) 

или

 map(lambda x: max(x, key=lambda y: y[1]) , lists) 

Как говорит spintheblack, у вас есть список списков кортежей. Я предполагаю, что вы ищете наивысшее целочисленное значение всех кортежей.

Вы можете выполнить итерацию по внешнему списку, затем по списку кортежей кортежей:

 max_so_far = 0 for list in adymlist: for t in list: if t[1] > max_so_far: max_so_far = t[1] print max_so_far 

Это немного более многословно, но может быть легче понять.

  • Преобразование 12-часового формата времени в формат времени 24 часа (сохранение записи дня) в python
  • Листинг слов случайным образом, не повторяя их
  • Как удалить пустую строку в списке?
  • Удаление нескольких элементов из списка
  • разница между добавлением списков в python с + и + =
  • Удалить все значения в одном списке из другого списка?
  • Создайте пустой список в python с определенным размером
  • Список чередования с фиксированным элементом
  • python: самый элегантный способ пересечения списка с элементом
  • Почему добавление в список делает разные вещи?
  • Создание дубликатов в списке
  •  
    Interesting Posts for Van-Lav

    Записать список кортежей в txt-файл

    используя SciPy для интеграции функции, возвращающей матрицу или массив

    App Engine (python) пропускает промежуточное программное обеспечение webapp (например, Appstats), но отлично работает на dev-сервере

    Моделирование потенциала Леннарда-Джонса

    Как обнаружить недостающие поля в файле CSV на Pythonic?

    Автоматически создавать графический интерфейс из XML-схемы

    Отправка сообщения обратно в SQS

    Что происходит быстрее – загрузка маринованного словарного объекта или загрузка файла JSON – в словарь?

    Где я должен поместить файл .pdbrc в окна, чтобы он был глобально видимым?

    Доступ к произвольному элементу в словаре в Python

    Python Разрешение отклонено:

    Работа с репозиторием GitHub Wiki с использованием Python

    Функция print () Python 3 с символами фарси / арабский

    Не удалось импортировать пользовательскую DLL в python

    где находится виджет кнопки в pyglet?

    Python - лучший язык программирования в мире.