Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 三元运算符不在循环的字典中工作_Python_If Statement_Conditional Statements_Operation - Fatal编程技术网

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