Skip to main content
 首页 » 编程设计

python之当 if 语句的顺序不同时返回键错误的原因

2025年05月04日23JeffreyZhao

代码和上下文:

关于数据查询练习的 Python 类(class)简介。 Applestore.csv 包含有关应用程序商店中应用程序的数据,任务是创建一个包含年龄评级作为键和频率作为值的字典。

opened_file = open('AppleStore.csv') 
from csv import reader 
read_file = reader(opened_file) 
apps_data = list(read_file) 
content_ratings={} 
for rows in apps_data[1:]: 
    c_rating=rows[10] 
    if c_rating in content_ratings==false: 
        content_ratings.update({c_rating:1}) 
    else: 
        content_ratings[c_rating]+=1 
print(content_ratings) 

我不明白为什么上面给出了一个关键错误,而下面的工作正常:

opened_file = open('AppleStore.csv') 
from csv import reader 
read_file = reader(opened_file) 
apps_data = list(read_file) 
content_ratings={} 
for rows in apps_data[1:]: 
    c_ratings=rows[10] 
    if c_ratings in content_ratings: 
        content_ratings[c_ratings]+=1 
    else:  
        content_ratings.update({c_ratings:1}) 
print(content_ratings) 

在上面的例子中,我相信我是说如果 c_rating 没有作为键出现,那么更新字典以生成键值对,只需将值加 1。

在第二种情况下,我相信我是说如果键已经存在,则将 1 添加到值,否则使用键值对更新字典。

为什么后者优于前者?

请您参考如下方法:

content_ratings==false 中的 c_rating 永远不会为真。 Python 中的这些运算符链:相当于 content_ratings 和 content_ratings==false 中的 c_rating

你可以这样写

if (c_rating in content_ratings) == False: 

但正确的写法是

if c_rating not in content_ratings: 

更好的是,您可以将整个 if/else 替换为

content_rating[c_rating] = content_rating.get(c_rating, 0) + 1