簡體   English   中英

遍歷字典 python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM