【问题标题】:Create list of dictionaries when key value is greater than 0当键值大于 0 时创建字典列表
【发布时间】:2018-09-18 02:56:01
【问题描述】:

我有一个电影数据字典,我想创建一个新字典,其中包含预算和收入键值都大于 0.0 的电影子集。

这是我的代码,有人可以帮忙吗?

movies_bud_rev = {}
for movie in movie_data:
    if (movie_data['revenue'] != 0.0 or movie_data['budget'] != 0.0):
        id = movie_data['id']
        budget = movie_data['budget']   
        revenue = movie_data['revenue']
        original_title = movie_data['original_title']
        release_year = movie_data['release_year']
        genre = movie_data['genre']
        popularity = movie_data['popularity']
        vote_average = movie_data['vote_average']
        vote_count = movie_data['vote_count']

len (movies_bud_rev)

我收到的错误:

TypeError: list indices must be integers, not str

我的字典 enter image description here

我尝试创建新字典 enter image description here

【问题讨论】:

  • 请在您的问题中发布代码,而不是图片。

标签: python python-2.7 list csv dictionary


【解决方案1】:

根据您提供的图片,movie_data 是list of dictionaries。

因此,您需要将过滤为列表。您可以通过列表推导来实现这一点。

res = [m for m in movie_data if (m['revenue'] > 0 and m['budget'] > 0)]

注意一些问题:

  • 结果也将是一个字典列表。
  • 收入和预算大于零的逻辑需要使用and,而不是or。

【讨论】:

  • 如果收入为-1怎么办,呵呵。 if m['revenue'] > 0
  • @lava-lava,好点 - 已更新。我认为用户出于某种原因想要非零。另外(也许我很昏暗),收入怎么可能是负数?收入 = 销售额只能是正数,对吗?
  • 我是 python 编码的新手,谢谢你的帮助。我没有考虑负数。这一点很有帮助。我只是不确定如何在我的代码中使用“res = ....”。它应该以某种方式成为我的 if 语句的一部分吗?
【解决方案2】:

根据您发布的图片movie_data 是包含字典的列表 而你在movie_data 中使用索引,这就是为什么你在movie 中出现错误,这是字典对象

movies_bud_rev = {}
for movie in movie_data:
    if (movie['revenue'] != 0.0 or movie['budget'] != 0.0):
        id = movie['id']
        budget = movie['budget']   
        revenue = movie['revenue']
        original_title = movie['original_title']
        release_year = movie['release_year']
        genre = movie['genre']
        popularity = movie['popularity']
        vote_average = movie['vote_average']
        vote_count = movie['vote_count']

【讨论】:

  • 修复了缩进
  • 谢谢。这解决了我的错误,但我也没有捕获任何记录。所以我有更多的工作要做。
  • 您可以进一步尝试,如果有效,请接受答案。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 2018-01-14
  • 2020-04-06
相关资源
最近更新 更多