首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中嵌套在列表中的元组的任意排序

Python中嵌套在列表中的元组的任意排序
EN

Stack Overflow用户
提问于 2011-11-27 15:56:50
回答 2查看 142关注 0票数 2

我有一个从Solr返回的元组列表,如下所示:

代码语言:javascript
复制
 [('Second Circuit', 34), ('Ninth Circuit', 24), ('Third Circuit', 4), ('Eleventh Circuit', 2)]

请注意,不仅返回了第二、第三、第九和第十一个电路。

我需要根据我拥有的一个排序元组对其进行排序,如下所示:

代码语言:javascript
复制
COURT_ORDER = (
    'Supreme Court',
    'First Circuit',
    'Second Circuit',
    'Third Circuit',
    'Fourth Circuit',
    ...and so on...,
)

排序后所需的输出为:

代码语言:javascript
复制
 [('Second Circuit', 34), ('Third Circuit', 4), ('Ninth Circuit', 24), ('Eleventh Circuit', 2)]

有没有一种聪明的方法可以做到这一点?

(如果可能的话,这需要用Sunburnt标签来标记,但我不能创建它,因为缺少点。)

EN

回答 2

Stack Overflow用户

发布于 2011-11-27 16:06:55

构建一个字典,将法院名称映射到所需的排名。然后使用key function进行排序,该up查找法院名称以查找排名:

代码语言:javascript
复制
>>> COURT_ORDER = (
    'Supreme Court',
    'First Circuit',
    'Second Circuit',
    'Third Circuit',
    'Fourth Circuit',
    'Ninth Circuit',
    'Eleventh Circuit',
)
>>> court_seq = dict(zip(COURT_ORDER, range(len(COURT_ORDER))))
>>> lot = [('Second Circuit', 34), ('Ninth Circuit', 24), ('Third Circuit', 4), ('Eleventh Circuit', 2)]
>>> sorted(lot, key=lambda t: court_seq[t[0]])
[('Second Circuit', 34), ('Third Circuit', 4), ('Ninth Circuit', 24), ('Eleventh Circuit', 2)]

有关如何排序的更多信息,请参阅Sorting HOWTO

票数 4
EN

Stack Overflow用户

发布于 2011-11-27 18:20:08

根据[0]项在COURT_ORDER中首次出现的index对项执行COURT_ORDER操作

代码语言:javascript
复制
data = [('Second Circuit', 34), ('Ninth Circuit', 24), ('Third Circuit', 4), ('Eleventh Circuit', 2)]
sorted(data, key = lambda x: COURT_ORDER.index(x[0]))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8284326

复制
相关文章

相似问题

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