SyntaxError:无法分配给运算符-尝试执行for循环时出错

时间:2019-02-11 13:57:44

标签: python-3.x for-loop

我正在尝试使用for循环创建以下语法:

file_1_0 = data[0][0]
file_1_1 = data[0][1]
file_1_2 = data[0][2]
file_1_3 = data[0][3]
file_1_4 = data[0][4]
file_1_2 = "{:,}".format(file_1_2)
file_2_0 = data[1][0]
file_2_1 = data[1][1]
file_2_2 = data[1][2]
file_2_3 = data[1][3]
file_2_4 = data[1][4]
file_2_2 = "{:,}".format(file_2_2)

下面给出的是我试图实现上述效果的for循环:

for i in range(1, len(file_data)):
    for k in range(0, len(file_data) - 1):
        for j in range(0, 4):
            str(file_) + str(i) + str(_) + str(j) = str(locals()["data_" + str(k) + "_" + str(j)])

我遇到错误

SyntaxError: can't assign to operator

1 个答案:

答案 0 :(得分:0)

您不能分配给表达式def get_queryset(self): filter1 = self.request.GET.get('filter1 ', '') filter2__startswith = self.request.GET.get('filter2_prefix ', '') def filters_to_Qs(filters): return [Q(**{k: v}) for k, v in filters.items() if v] filters = {'filter1': filter1 , 'filter2__startswith': filter2__startswith } return Order.objects.filter(*filters_to_Qs(filters)) -这只是四个字符串的串联。

与PHP和其他一些语言不同,Python无法将字符串表达式转换为变量名。如果确实需要,则可以生成代码,然后使用str(file_) + str(i) + str(_) + str(j)来运行它(Python等效于exec(),而Python中的eval()仅计算一个表达式而不是多个语句) 。但是,您可能知道,没有一个需要eval()的解决方案是一个好主意。

一种更好的解决方案是使用字典键而不是变量:

eval()