从字典中删除数据

2024-05-12 18:10:36 发布

您现在位置: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部电影没有预算。然后我创建了一个集合来存储数据,并检查集合的长度以确认与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。我肯定这里有些小事情我做得不对


Tags: 数据noinidfordataif电影
2条回答

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

#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

相关问题 更多 >