使用dict python的每种类型的电影数量

时间:2018-02-09 08:32:24

标签: python-3.x dictionary collections counter

在我的代码中,我试图找出电影数据集中每种类型的电影数量。发现这是一个例子,但我无法找到这个示例代码的解释。

$(document).ready(function() {
  $("select").on("change", function() {
    Yourfunction($(this).val())
  });
});

function Yourfunction(value){
  console.log("The value from the select " + value)
}

1 个答案:

答案 0 :(得分:0)

在不确切知道movies_df数据集中的内容的情况下提供所有细节有点困难。但是......我最好的猜测是它是一系列存储在子列表中的电影类型。对于这个例子,我们可以认为它就像一个列表列表:

[[romance, horror, thriller],
 [action, adventure, mystery],
 [horror, thriller, action],
 [romance, adventure, mystery]]

以下行从Counter库导入collections类。 Counter类接受一系列项目并计算每个项目的显示数量。它将该数据存储在Counter对象中,该对象非常类似于具有一些额外功能的字典(例如能够向您显示哪些项目最常见)。

from collections import Counter

接下来的这一部分将深入到类型数组中的每个子列表中,并从每个子列表中提取每个项目并将它们转储到单个巨型列表中。这是使用称为列表推导的语法完成的。这种从嵌套子列表中提取数据到单个列表的技术称为展平。

flattened_genres = [item for sublist in movies_df.genres_arr for item in sublist]

编写上述内容的另一种方法是使用嵌套for循环并将数据附加到主列表:

flattened_genres = []
for sublist in movies_df.genres_arr:
    for item in sublist:
        flattened_genres.append(item)

列表推导通常比嵌套for循环和附加函数调用具有更好的性能,但对于初学者来说往往有点难以理解,直到他们已经看过几次。

扁平化的结果如下所示:

[romance, horror, thriller, action, adventure, mystery, horror, thriller, action, romance, adventure, mystery]

任何序列都可以输入Counter来获取计数。使用这个简单的列表,我们可以统计所有的'以及所有的&#b;等等。

c = Counter(['a', 'b', 'c', 'b', 'a'])

这产生了一个Counter对象,看起来像这样,并显示它计算了两个'一个和两个'等等:

>>> c
Counter({'a': 2, 'b': 2, 'c': 1})

Counter个对象与dict有点不同,所以如果你真的需要一个字典,你可以通过{{1}运行它来将Counter转换为字典。 } factory函数进行转换。在这种情况下,我们将dict flattened_genres作为参数提供给list工厂函数中的Counter类。

dict

最后,我们打印新词典。 Python {2}中使用了此genre_dict = dict(Counter(flattened_genres)) 语句。提供了Python版本3 print函数的完整性:

print()