2016-04-12 14 views
4

からthis answer私は平らなリストを持っています。Pythonで平らにし、重複を削除し、リストのリストをソート

今、重複を削除してリストをソートしたいと思います。現在、私は以下を持っています:

x = itertools.chain.from_iterable(results[env].values()) #From the linked answer 
y = sorted(list(set(x)), key=lambda s:s.lower()) 

これを達成する良い方法がありますか?私の場合、xのサイズは〜32,000、yのサイズは〜1,100になります。私が働いていますが、何か良いものがあるかどうかを確認したいのですが(速く、読みやすくするなど)

答えて

3

実際には、不要なリスト()を削除すれば、あなたの元々の問題に対するきちんとした解決策です。あなたのコードは完全に読みやすく効率的だと思います。 results[env]以来

y = sorted(set(x), key=lambda s:s.lower()) 
+0

パフォーマンスに大きな違いはありません。 – Kasramvd

1

、結果を並べ替えるあなたの代わりに値を平坦化する労働組合の値のセットを作成することができ辞書です:

>>> sorted(set().union(*results[env].values()), key=str.lower) 

はまた、あなたがあなたのようlambda機能を必要としないことに注意してくださいキーは、簡単にstr.lowerメソッドを使用することができます。

関連する問題