我正在使用 Python 3.2,并希望根据配置文件对元组列表进行排序:
formats=CCC;aaa;BBB
providers=yy;QQ;TT
每个元组都包含以下信息:
( title, size, format, provider )
我希望这组元组首先按提供者列表排序。所有 yy 都在 QQ 和 TT 之前。
然后,保持这个结果顺序,进入格式。所有 CCC 在 aaa 之前在 BBB 之前。
最后,第三个标准是按大小(浮点数)按降序排序。
至关重要的是,每个步骤都使用稳定的排序,以便二级排序保持第一个排序的顺序,依此类推。
我怎样才能以pythonic方式做到这一点?谢谢。
编辑 1
这是我尝试过的,我的它显然不会工作,因为sorted(mydata)
. 在这种情况下,mydata 不能是列表。
providers="yy;QQ;TT"
formats="CCC;aaa;BBB"
p_dict = {}
f_dict = {}
for k,v in enumerate(providers.split(';')):
p_dict[k] = v
for k,v in enumerate(formats.split(';')):
f_dict[k] = v
mydata = (
('title1', 423.4, 'QQ', 'aaa'),
('title2', 523.2, 'TT', 'CCC'),
('title3', 389.0, 'yy', 'aaa'),
('title4', 503.2, 'QQ', 'BBB') )
sort1 = sorted( mydata, key=p_dict.__getitem__)
print(sort1)