Python 三元运算符不在循环的字典中工作
我正在创建一个字典来查找文件某一列中的所有唯一值,并计算它们出现的次数 以下代码起作用:Python 三元运算符不在循环的字典中工作,python,if-statement,conditional-statements,operation,Python,If Statement,Conditional Statements,Operation,我正在创建一个字典来查找文件某一列中的所有唯一值,并计算它们出现的次数 以下代码起作用: content_ratings = {} for app in apps_data[1:]: c_rating = app[10] if c_rating in content_ratings: content_ratings[c_rating] += 1 else: content_ratings[c_rating] = 1 这个很好用。然而我
content_ratings = {}
for app in apps_data[1:]:
c_rating = app[10]
if c_rating in content_ratings:
content_ratings[c_rating] += 1
else:
content_ratings[c_rating] = 1
这个很好用。然而我正试着用一个三元运算符
for app in apps_data[1:]:
c_rating = app[10]
content_ratings[c_rating] += 1 if c_rating in content_ratings else content_ratings[c_rating] = 1
我的代码中的错误在哪里?怎么样
for app in apps_data[1:]:
c_rating = app[10]
content_ratings[c_rating] = content_ratings[c_rating] + 1 if c_rating in content_ratings else content_ratings[c_rating]
赋值是语句,而不是表达式,因此不能出现在条件表达式中。您的尝试被解析为
content_ratings[c_rating] += (1 if c_rating in content_ratings
else content_ratings[c_rating]) = 1
也就是说,条件表达式选择两个值中的一个,而不是两个语句中的一个,结果是两个链式赋值中的第一个的l值无效
相反,请使用setdefault
方法:
content_ratings.setdefault(c_rating, 0) += 1
或者使用defaultdict
:
import collections
content_ratings = collections.defaultdict(int)
for app in apps_data[1:]:
c_rating = app[10]
content_ratings[c_rating] += 1