遍历字典python

时间:2020-05-27 10:57:04

标签: python loops dictionary

我正在尝试为函数编写测试,并创建一个假字典以在测试中使用-但是,我无法确定字典在该函数中应采用的格式。该函数如下所示:

...

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

2 个答案:

答案 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(整数)值而不是字符串。