Python计算,使用元组,列表。Python 2.7

Python计算,使用元组,列表。Python 2.7,python,list,tuples,multiplication,Python,List,Tuples,Multiplication,好的,开始吧。我有一个元组列表,其中有一个用户,然后是他们的图书评级列表,作为第二项。例如: 这只是列表中的前两件事。好的,他们总共有86个用户,他们的评分在列表中。我需要弄清楚如何将Ben的所有评级乘以Moose的所有评级,然后将它们相加。例如,Ben的第一个评分是5,Moose的第一个评分是5,所以我做了5x5,然后将其添加到相似性分数列表中。我的问题是,我不知道如何将评分列表的所有元素乘以输入用户的评分列表。因此,我需要基本上,提示输入用户名,然后将所有其他用户的评分乘以所选用户,并输出

好的,开始吧。我有一个元组列表,其中有一个用户,然后是他们的图书评级列表,作为第二项。例如:


这只是列表中的前两件事。好的,他们总共有86个用户,他们的评分在列表中。我需要弄清楚如何将Ben的所有评级乘以Moose的所有评级,然后将它们相加。例如,Ben的第一个评分是5,Moose的第一个评分是5,所以我做了5x5,然后将其添加到相似性分数列表中。我的问题是,我不知道如何将评分列表的所有元素乘以输入用户的评分列表。因此,我需要基本上,提示输入用户名,然后将所有其他用户的评分乘以所选用户,并输出最高的相似性分数。感谢您的帮助,因为我陷入了困境,请提前感谢。

您可以使用NumPy,但纯Python解决方案也很简单:

d=我的清单 Summaperator.mul,d[Ben],d[Moose] 第一行与问题无关——它只是将元组列表转换为更合适的字典

要获得完整的相似性矩阵,可以使用

{name1:{name2:summapoperator.mul,d[name1],d[name2]表示d}中的name2 对于d}中的name1
后一个代码片段仅适用于Python 2.7或3.x。

您可以使用NumPy,但纯Python解决方案也很简单:

d=我的清单 Summaperator.mul,d[Ben],d[Moose] 第一行与问题无关——它只是将元组列表转换为更合适的字典

要获得完整的相似性矩阵,可以使用

{name1:{name2:summapoperator.mul,d[name1],d[name2]表示d}中的name2 对于d}中的name1
后一个代码片段仅适用于Python 2.7或3.x。

当我尝试执行这两种解决方案中的一种或两种时,我得到一个错误:说全局名称“运算符”没有被定义。@ MichaelLatimer:你必须导入运算符来使用它。@ MichaelLatimer:你需要一些Python的基本知识来利用这里的答案——考虑通过Python教程来工作。好吧,我猜出来了,猜它应该是显而易见的。嘿。我怎样才能让它把名字1的名字输入和整个名字列表进行比较?@MichaelLatimer:不知道把名字和名字列表进行比较意味着什么。当我试图做这两种或其中一种解决方案时,我得到一个错误:说全局名称“运算符”没有被定义。@ MichaelLatimer:你必须导入运算符来使用它。@ MichaelLatimer:你需要一些Python的基本知识来利用这里的答案——考虑通过Python教程来工作。好吧,我猜出来了,猜它应该是显而易见的。嘿。我怎样才能让它把名字1输入的名字和整个名字列表进行比较?@MichaelLatimer:不知道把名字和名字列表进行比较意味着什么。
[('Ben', [5, 0, 0, 0, 0, 0, 0, 1, 0, 1, -3, 5, 0, 0, 0, 5, 5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, -5, 0, 0, 5, 5, 0, 5, 5, 5, 0, 5, 5, 0, 0, 0, 5, 5, 5, 5, -5]),
('Moose', [5, 5, 0, 0, 0, 0, 3, 0, 0, 1, 0, 5, 3, 0, 5, 0, 3, 3, 5, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 3, 5, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 5, 0, 3, 0, 0])]