簡體   English   中英

將鍵值對添加到dict

[英]adding a key value pair to dict

在以下代碼中,“ row [header]”出現錯誤:

for field in Document._meta.get_fields():
    headers.append(field.name)

docs = Document.objects.order_by('id')
for doc in docs:
    row = {}
    for header in headers:
        if hasattr(doc, header):
            row[header] = getattr(doc, header)
    files.append(row)

Python說:TypeError:列表索引必須是整數或切片,而不是str

怎么了?

Python回溯:

Traceback (most recent call last):
  File "/home/niels/PycharmProjects/sitesv/env/lib/python3.5/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/niels/PycharmProjects/sitesv/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/niels/PycharmProjects/sitesv/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/niels/PycharmProjects/sitesv/files/views.py", line 87, in get_file_list
    row[header] = getattr(doc, header)
TypeError: list indices must be integers or slices, not str

評論已確認答案:

變量row已經在較高范圍內,因此對它的寫入將被另一個線程對它的寫入所覆蓋。

row名更改為其他名稱可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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