我正在尝试为函数编写测试,并创建一个假字典以在测试中使用-但是,我无法确定字典在该函数中应采用的格式。该函数如下所示:
...
for data in form.cleaned_data["flows"]:
data_point = property.MeterPoint.objects.get(id=data["id"])
我认为字典应该采用以下格式:
form.cleaned_data = {'flows': {"id": "1234"}}
但是运行测试时,我总是收到此错误:
id=data["id"]
E TypeError: string indices must be integers
答案 0 :(得分:0)
遍历字典时,您会得到它们的键,而不是它们的值。这意味着要访问值,我们必须尝试使用variable [key]来访问键,就像字典一样,因为键是字符串,因此python假设您尝试访问字符串的char,但这只能用整数完成。
for key in form.cleaned_data["flows"]:
data_point = property.MeterPoint.objects.get(id=form.cleaned_data["flows"][key]["id"])
答案 1 :(得分:0)
我不确定您使用的是什么框架,但是我可以说的是,如果
form.cleaned_data["flow"]
是您定义为
的词典{"id": "1234"}
然后您的数据变量的类型为str
(字符串)。
因为遍历字典就是遍历字典的键。
如果要遍历值,可以使用.values()
方法,例如
for data in my_dict.values():
print(data)
如果您使用.values()
,则您的数据将为str
(字符串)类型,值为"1234"
。
此外,您可以遍历键对值项(对)的元组。
为此,您可以使用.items()
方法。例如
for key, value in my_dict.items():
print(key, value)
t = (1, 2, 3)
,则可以将其分配为三个
变量为a, b, c = t
。有了这个a = 1, b = 2, c = 3
。有关错误的一些说明:
您面临的错误是因为data
的类型可能是str
,并且要访问字符串的索引,您应该传递int
(整数)值而不是字符串。