Python 从字典中删除数据

Python 从字典中删除数据,python,Python,我希望摆脱没有预算的电影,这意味着它们等于0。为了做到这一点,我首先确定了数据中有多少 num_no_budgets = 0 for movie_data in imdb_data: movie = movie_data['budget'] if movie == 0: num_no_budgets += 1 print(num_no_budgets) 这告诉我,数据中有5696部电影没有预算。然后我创建了一个集合来存储数据,并检查集合的长度

我希望摆脱没有预算的电影,这意味着它们等于0。为了做到这一点,我首先确定了数据中有多少

num_no_budgets = 0

for movie_data in imdb_data:
    movie = movie_data['budget']
    if movie == 0:
        num_no_budgets += 1
        
print(num_no_budgets)
这告诉我,数据中有5696部电影没有预算。然后我创建了一个集合来存储数据,并检查集合的长度以确认与5696匹配的数量

no_budget_movies = set()
for movie_data in imdb_data:
    if movie_data['budget'] == 0:
        no_budget_movies.add(movie_data['id'])
len(no_budget_movies)
长度匹配,因此我创建了一个函数来删除数据中的长度:

def remove_nobudget_movies(data):
no_budget_data = []
for data_point in data:
    if data_point['id'] in no_budget_movies:
        no_budget_data.append(data_point)
    return no_budget_data

但是,当我运行这个并检查长度时,得到0。我确信这里有一些小事情我做得不对。

看起来很复杂,下面是一些应该做的事情,用一种更简单的方式:

#Init your lists
budget_movies = []
no_budget_movies = []

#To get rid of potential duplicates:
#imdb_data = list(set(imdb_data))

for movie_data in imdb_data:
    #If no budget just add in no budget list
    if movie_data['budget'] == 0:
        no_budget_movies.append(movie_data)
    #Else add in budget list
    else: 
        budget_movies.append(movie_data)

#Compute the length
print (len(no_budget_movies))
print (len(budget_movies))

尝试更改缩进:

def remove_nobudget_movies(data):
    no_budget_data = []
    for data_point in data:
        if data_point['id'] in no_budget_movies:
            no_budget_data.append(data_point)
    return no_budget_data

您似乎有一些缩进错误。请使用调试器。这非常有效!非常感谢。