在单个字典中查找两个不同键值列表的Dot Product

时间:2016-09-11 01:58:50

标签: python list dictionary product

我正在使用此方法创建一个字典,其中键是与值列表配对的名称

def create_voting_dict(strlist):
    return {line.split()[0]:[int(x) for x in line.split()[3:]] for line in strlist}

但是,现在我必须使用字典中找到的两个键的值的点积。 这个新问题的开头如下:

def policy_compare(sen_a, sen_b, voting_dict):

我在尝试找到在这种情况下要返回的内容时遇到问题。 欢迎任何帮助!提前谢谢!

哦!预期结果的一个例子如下:

 ...voting_dict = {'Fox-Epstein':[-1,-1,-1,1],'Ravella':[1,1,1,1]}
 ...policy_compare('Fox-Epstein','Ravella', voting_dict)
 ...-2

1 个答案:

答案 0 :(得分:0)

我希望这就是你所需要的。

def create_voting_dict(strlist):
    return {line.split()[0]:[int(x) for x in line.split()[3:]] for line in strlist}

def dot(K, L):
   if len(K) != len(L):
      return 0

   return sum(i[0] * i[1] for i in zip(K, L))

def policy_compare(sen_a, sen_b, voting_dict):
    return dot(voting_dict[sen_a], voting_dict[sen_b])

voting_dict = {'Fox-Epstein':[-1,-1,-1,1],'Ravella':[1,1,1,1]}
print(policy_compare('Fox-Epstein','Ravella', voting_dict))

它返回-2。