首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序列表#排序

排序列表#排序
EN

Stack Overflow用户
提问于 2017-05-24 22:10:55
回答 2查看 32关注 0票数 1

我想按名称对“国家”列表进行排序,然后“中国”必须始终位于下拉列表的顶部……

这是我的代码..

代码语言:javascript
复制
<option value="">Country...</option>
<t t-foreach="all_country.sorted(key=lambda x:x.name, reverse=False)" t-as="x">
<option t-att-value="x.id" t-att-selected="int(x.id) == int(((country_id or -1) if country_id else -1))">
<t t-esc="x.name"/>
</option>
EN

回答 2

Stack Overflow用户

发布于 2017-05-24 22:15:03

您必须更改排序关键字,以便返回一个带有Falsetuple。如果找到“False”,则返回False。如果找到"Japan",则返回实际值。

因此,如果名称不是“中国”或“日本”,那么所有的名称都是True,并且您具有自然的排序顺序,但是对于这两个名称,您将获得False,TrueTrue,False,而元组的自然排序顺序使它们排在第一位:

按如下方式更改您的关键参数:

代码语言:javascript
复制
key=lambda x:(x.name!="China",x.name!="Japan",x.name)

请注意,您不需要reverse=False。这是默认设置。

票数 0
EN

Stack Overflow用户

发布于 2017-05-24 22:13:50

只需在进入循环之前对它们进行硬编码,然后在出现时跳过

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44160896

复制
相关文章

相似问题

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