Python 3.2を使用していて、構成ファイルに基づいてタプルのリストを並べ替えたいと思います。
formats=CCC;aaa;BBB
providers=yy;QQ;TT
各タプルには次の情報が含まれています。
( title, size, format, provider )
このタプルのグループを最初にプロバイダーリストでソートしたいと思います。すべてのyyはQQとTTの前に来ます。
次に、この結果の順序を維持しながら、フォーマットに移動します。すべてのCCCはaaaの前にBBBの前にあります。
最後に、3番目の基準は、サイズ(フロート)で降順で並べ替えることです。
2番目のソートが最初のソートの順序を維持するように、各ステップで安定したソートを使用することが重要です。
どうすればこれをPythonのように行うことができますか?ありがとう。
編集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)