我有一个从Solr返回的元组列表,如下所示:
[('Second Circuit', 34), ('Ninth Circuit', 24), ('Third Circuit', 4), ('Eleventh Circuit', 2)]请注意,不仅返回了第二、第三、第九和第十一个电路。
我需要根据我拥有的一个排序元组对其进行排序,如下所示:
COURT_ORDER = (
'Supreme Court',
'First Circuit',
'Second Circuit',
'Third Circuit',
'Fourth Circuit',
...and so on...,
)排序后所需的输出为:
[('Second Circuit', 34), ('Third Circuit', 4), ('Ninth Circuit', 24), ('Eleventh Circuit', 2)]有没有一种聪明的方法可以做到这一点?
(如果可能的话,这需要用Sunburnt标签来标记,但我不能创建它,因为缺少点。)
发布于 2011-11-27 16:06:55
构建一个字典,将法院名称映射到所需的排名。然后使用key function进行排序,该up查找法院名称以查找排名:
>>> 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。
发布于 2011-11-27 18:20:08
根据[0]项在COURT_ORDER中首次出现的index对项执行COURT_ORDER操作
data = [('Second Circuit', 34), ('Ninth Circuit', 24), ('Third Circuit', 4), ('Eleventh Circuit', 2)]
sorted(data, key = lambda x: COURT_ORDER.index(x[0]))https://stackoverflow.com/questions/8284326
复制相似问题