首页 > 解决方案 > if语句的顺序不同时返回键错误的原因?

问题描述

代码和上下文:

关于数据探索练习的 Python 课程简介。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 添加到值中,否则使用键值对更新字典。

为什么后者比前者更有效?

标签: python

解决方案


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

你可以写

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

推荐阅读