代码和上下文:
关于数据查询练习的 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
