首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中对一组对象进行排序

问在Python中对一组对象进行排序
EN

Stack Overflow用户
提问于 2014-03-15 01:25:46
回答 3查看 191关注 0票数 0

对于我目前的Twitter Clone项目,我正在学习Python/Django,我现在有一组对象,Tweets,我想按pub_date排序,当然这是它们发布的日期时间。既然集合没有排序方法(或者QuerySets提供的方便的order_by ),那么对这个集合进行排序的最好方法是什么?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-03-15 01:29:15

您可以通过标准的sorted函数从set生成已排序元素的list,并使用定制的key函数来访问要排序的正确元素。但是不能对set中的实际元素进行排序,因为根据定义,python中的set是无序的。

set文档的标题从字面上看是“唯一元素的无序集合”。这与set不支持按索引访问的原因相同,因为每次插入元素时,set的顺序都会改变。

票数 0
EN

Stack Overflow用户

发布于 2014-03-15 01:38:07

您需要将该集合转换为列表。使用your_list = list(your_set)

代码语言:javascript
复制
#To sort the list in place... by "pub_date"
your_list.sort(key=lambda x: x.pub_date, reverse=True)

#To return a new list, use the sorted() built-in function...
newlist = sorted(your_list, key=lambda x: x.pub_date, reverse=True)
票数 0
EN

Stack Overflow用户

发布于 2014-03-15 01:42:35

你可以将你的set传递给sorted函数,它将返回一个排序的列表,排序的函数将接受一个键,你可以为它提供一个自定义的函数来对你的项目进行排序:

代码语言:javascript
复制
>>> s = set('abcde')
>>> s
set(['a', 'c', 'b', 'e', 'd'])
>>> sorted(s, key = lambda x: -ord(x))
['e', 'd', 'c', 'b', 'a']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22411823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档