[英]ValueError: too many values to unpack
我正在尝试对MongoDB中的字典进行排序。 但是,出现值错误“无法解包的值太多”,因为我认为这意味着每个字典中的值太多(每个字典中有16个值)。 这是我的代码:
FortyMinute.find().sort(['Rank', 1])
有人知道如何解决这个问题吗?
编辑:完全追溯
Traceback (most recent call last):
File "main.py", line 33, in <module>
main(sys.argv[1:])
File "main.py", line 21, in main
fm.readFortyMinute(args[0])
File "/Users/Yih-Jen/Documents/Rowing Project/FortyMinute.py", line 71, in readFortyMinute
writeFortyMinute(FortyMinData)
File "/Users/Yih-Jen/Documents/Rowing Project/FortyMinute.py", line 104, in writeFortyMinute
FortyMinute.find().sort(['Rank', 1])
File "/Users/Yih-Jen/anaconda/lib/python2.7/site-packages/pymongo/cursor.py", line 692, in sort
self.__ordering = helpers._index_document(keys)
File "/Users/Yih-Jen/anaconda/lib/python2.7/site-packages/pymongo/helpers.py", line 65, in _index_document
for (key, value) in index_list:
ValueError: too many values to unpack
您可以这样解压传递参数和值:
FortyMinute.find().sort('Rank', 1)
FortyMinute.find().sort([(Rank', 1), ('Date', 1)])
Cursor.sort
文档也建议使用pymongo.DESCENDING
和pymongo.ASCENDING
而不是1和-1;
通常,应该在代码中使用描述性变量名称而不是魔术常数,如下所示:
FortyMinute.find().sort('Rank',pymongo.DESCENDING)
sorted
可以接受迭代器,而不仅是序列,它可能效率更低,更不规范:
sorted(FortyMinute.find(), key=key_function)
您可以在其中定义key_function
以返回记录的Rank
列。
如果您想对mong / pymongo进行排序:
FortyMinute.find().sort('Rank', 1)
如果要使用多个字段进行排序:
FortyMinute.find().sort([('Rank': 1,), ('other', -1,)])
您还可以使用常量来使自己更清楚自己在做什么:
FortyMinute.find().sort('Rank',pymongo.DESCENDING)
如果要首先在python中排序,则必须返回结果并在python中使用排序方法:
sorted(FortyMinute.find(), key=<some key...>)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.