[英]Iterating through a dictionary python
我正在尝试为 function 编写测试,并创建一个假字典以在测试中使用 - 但是,我无法确定字典的格式应该是什么才能在 function 中工作。 function 是这样的:
...
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
当迭代一个 dict 时,你会得到它们的键而不是它们的值。 这意味着要访问我们必须使用变量 [key] 的值,您正在尝试访问密钥,就像一个 dict,因为密钥是一个字符串,python 假设您尝试访问字符串的一个字符,但是这个只能用 int 来完成。
for key in form.cleaned_data["flows"]:
data_point = property.MeterPoint.objects.get(id=form.cleaned_data["flows"][key]["id"])
我不确定您使用的是什么框架,但我可以说的是,如果
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
(整数)值而不是字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.