2016-07-19 2 views
-1

У меня есть словарь формы: -Попутный элементы и выполнения вычислений на список внутри словаря в пределах словаря

DictName = {'A1': {'B': ['B1', 'B2'], 'C': ['C1', 'C2']}, 'A2': {'B': ['B3', 'B4'], 'C': ['C3', 'C4']}} 

Мои попытки выполнения расчетов по элементам списка были напрасными

для например :

[B1, B2] - [B3 - B4] 

Я использую следующий код в функции для вычисления расстояния:

def _calculate_distance(x,y): 
return sqrt(sum(pow(a - b,2) for a, b in zip(x, y))) 

Я передаю два списка (lišta & LISTB) в зависимости от вида:

ListA = DictName[A1] 
ListB = DictName[A2] 

Я получаю следующее сообщение об ошибке, который указывает обратно на функцию упомянутой выше: -

TypeError: unsupported operand type(s) for -: 'list' and 'list' 

Думаю, я приближаюсь к этому неправильно.

Любые предложения о том, как передать элементы списка (B1, B2, B3, B4) в словаре (B) на основе значения ключа (A), которое заключено в самом словаре, так что вычисления может быть выполнено?

Надеюсь, это имеет смысл. Был бы рад, если кто-нибудь может помочь!

+0

Каков фактический код, генерирующий эту ошибку? – johnchase

+0

@johnchase его функция, упомянутая выше. То, где ошибка возникает, возникает – kage77

+0

Какие аргументы вы используете для вызова функции? – Alec

ответ

0

Функция _calculate_distance имеет два списка.

Если ваш словарь выглядит следующим образом:

DictName = {'A1': {'B': [1, 2], 'C': [1, 1]}, 'A2': {'B': [1, 4], 'C': [3, 2]}} 

и вы хотите передать список в 'A1', 'B' вы можете получить доступ к этому списку следующим:

DictName['A1']['B'] 
[1, 2] 

Эти списки могут быть переданы функция расстояния

_calculate_distance(DictName['A1']['B'], DictName['A1']['C']) 
2.2360679774997898 

Надеюсь, что это поможет

Смежные вопросы