我有一个用户列表,users["pirates"]
它们以['pirate1','pirate2']
. 如果我将列表交给 def 并在 MongoDB 中查询它,它只返回基于第一个索引(例如 pirate1)的数据。如果我交出格式中的列表["pirate1","pirate"]
,它会根据列表中的所有元素返回数据。所以我认为列表中元素的封装有问题。我的问题:我可以将封装从 ' 更改为 " 而不用手动循环替换每个元素上的每个 ' 吗?
简短的例子:
aList = list()
# get pirate Stuff
# users["pirates"] is a list returned by a former query
# so e.g. users["pirates"][0] may be peter without any quotes
for pirate in users["pirates"]:
aList.append(pirate)
aVar = pirateDef(aList)
print(aVar)
定义:
def pirateDef(inputList = list()):
# prepare query
col = mongoConnect().MYCOL
# query for pirates Arrrr
pirates = col.find({ "_id" : {"$in" : inputList}}
).sort("_id",1).limit(50)
# loop over users
userList = list()
for person in pirates:
# do stuff that has nothing to do with the problem
# append user to userlist
userList.append(person)
return userList
如果给定列表有 ' 封装,则返回:
'pirates': [{'pirate': 'Arrr', '_id': 'blabla'}]
如果用 " 封装,则返回:
'pirates' : [{'_id': 'blabla', 'pirate' : 'Arrr'}, {'_id': 'blabla2', 'pirate' : 'cheers'}]
编辑:我试图弄清楚,问题必须出在 MongoDB 查询中。该列表已正确移交给 Def,但在查询 pirates 后仅包含 1 个元素...
编辑2:原来问题是错误的输入与数据库中的数据不匹配(讨厌这些错误,因为它们很简单但很难理解:-))我很快就会删除这篇文章。
编辑3:该死的..不能删除:-(
谢谢你帮助我
码海