簡體   English   中英

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

[英]TypeError: list indices must be integers or slices, not ObjectId

我有一個用戶列表user_list=["5c471d607f","5c63e9e46a","5c63e9e44e"]我正在嘗試將其插入mongodb中以將其插入mongodb中,我的代碼是:

for i in range(0,len(user_list)):
    collection_4.update_one({'user_id':ObjectId(user_list[i])},{'$set':{'products': temp_list }},upsert=True)

This is giving me error, TypeError: list indices must be integers or slices, not ObjectId

雖然我可以在嘗試時將其插入:

collection_4.update_one({'user_id':ObjectId("5c471d607f")},{'$set':{'products': temp_list }},upsert=True)

我的代碼有什么問題?

您的腳本中某處必須有另一個錯誤。 我可以通過執行以下操作來重現您的錯誤:

from bson import ObjectId
l = ['a', 'b', 'c']
l[ObjectId('5c91ec870000000000000000')]

給出:

TypeError: list indices must be integers or slices, not ObjectId

您確定不是要使用ObjectId而不是使用索引對列表進行切片嗎?

您可能需要打印更多代碼,因為您的當前示例似乎還可以。

@DirtyBit帶來的另一項改進是,您可以使用enumerate遍歷列表,同時跟蹤索引:

for i, item in enumerate(user_list):
    collection_4.update_one({'user_id':ObjectId(item)},{'$set':{'products': temp_list }},upsert=True)

但是再一次,您不需要索引,因此您也可以這樣做:

for item in user_list:

嘗試這個

for i in range(0,len(user_list)):
    myid = user_list[i]
    collection_4.update_one({'user_id':str(myid)},{'$set':{'products': temp_list }},upsert=True)

暫無
暫無

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

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