传递元素&在字典内的字典内的列表上执行计算

时间:2016-07-19 16:25:10

标签: python list function dictionary

我有一份表格字典: -

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)))

我将两个列表(ListA和ListB)传递给表单的函数:

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

我收到以下错误,该错误指向上述功能: -

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

我认为我正以错误的方式接近这一点。

关于如何在字典(B)中传递列表元素(B1,B2,B3,B4)的任何建议,基于其自身字典中包含的键值(A),以便计算可以被执行?

我希望这是有道理的。如果有人能提供帮助,我会很高兴的!

1 个答案:

答案 0 :(得分: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

希望这有帮助