Нужна помощь в понимании того, что делает эта функция

Предполагая, что отступ в вашей реальной программе правильный, и что это Python 3.x (поскольку вы, похоже, используете печать как функцию), проблема будет в вашем заявлении лямбда. Очень маленький пример, чтобы показать вашу проблему -

>>> a = lambda (x,y) : x+y
  File "", line 1
    a = lambda (x,y) : x+y
               ^
SyntaxError: invalid syntax

В Python 3.x, tuples не может быть частью синтаксиса параметра lambda, то есть вы не можете напрямую распаковать элемент в несколько аргументов (как может быть сделано в Python 2.x). Вместо этого вам нужно будет использовать одну переменную, а затем получить доступ к каждому элементу кортежа, используя индекс. Пример -

print("The Overall Winner is,", sorted(data, key=lambda x: sum(n[1] for n in x[1]), reverse=True),sum(event[1] for event in event_data))

Кроме того, это кажется мне нечитаемым, вам следует разбить его на несколько строк (возможно, за исключением промежуточных результатов в разных переменных перед печатью, это было бы более читаемым).


Как вы говорите в комментариях -

Например, на этом рисунке мне нужна самая высокая строка с общим количеством точек, которые будут напечатаны, как показано в picture.

blockquote>

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

print("The Overall Winner is,", sorted(data, key=lambda x: sum(n[1] for n in x[1]), reverse=True)[0][0],sum(event[1] for event in event_data))

Для получения последних требований в соответствии с комментариями сделайте -

sortedlist = sorted(data, key=lambda x: sum(n[1] for n in x[1]), reverse=True)
print("The Overall Winner is,", sortedlist[0][0], sum(n[1] for n in sortedlist[0][1]))

-3
задан Remy Lebeau 16 January 2019 в 01:34
поделиться