Как решить неподдерживаемые типы операндов для +: 'int' и 'tuple' из-за попытки вернуть 2 значения с помощью лямбды? - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь вернуть 2 значения с помощью лямбды, но в итоге получаю эту ошибку:

TypeError: неподдерживаемые типы операндов для +: 'int' и 'tuple'

И вот код, который я получил ошибку:

def mean(n):
    return sum(n)/len(n) 

dataset = [
    {"name": "John",  "distance": 5602,  "max-speed": 504},
    {"name": "Mike",  "distance": 5242,  "max-speed": 622},
    {"name": "Chad",  "distance": 4825,  "max-speed": 453},
    {"name": "Phil",  "distance": 611,   "max-speed": 500},
    {"name": "Tyler", "distance": 5436,  "max-speed": 909}
]

mean(list(map(lambda x : (x["distance"], x["max-speed"]), dataset)))

Если бы это было только x ["distance"] или x ["max-speed"], он вернул быценность, которую я хочу.Я хочу, чтобы на выходе было

среднее расстояние

среднее значение максимальной скорости

Спасибо за продвижение.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

В конце концов, я мог бы решить ее с помощью этой средней функции

def mean(arr):
    n = float(len(arr))
    return tuple(sum(x[i] for x in arr)/n for i in range (len(arr[0])))

mean(tuple(map(lambda x : (x["distance"],x["max-speed"]),dataset)))

Вывод:

(4343.2, 597.6)

Спасибо всем.

0 голосов
/ 06 июня 2018

это?

def mean(n):
    return (sum([x for x,y in n]) / len(n),
            sum([y for x,y in n]) / len(l))

вывод:

(4343.2, 597.6)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...