web-dev-qa-db-ja.com

pythonのセットからリストを取得する

Pythonでset()の内容をlist[]形式で取得するにはどうすればよいですか?

コレクションをGoogle App Engineに保存する必要があるため、これを行う必要があります。エンティティプロパティタイプはリストであり、セットではありません。私はすべてを繰り返すことができることを知っていますが、これを行うためのショートカット、または「ベストプラクティス」の方法があるはずです。

53
Chris Dutrow
>>> s = set([1, 2, 3])
>>> list(s)
[1, 2, 3]

取得するリストには順序が定義されていないことに注意してください。

64
Sven Marnach

Svenの答えを参照してください。ただし、代わりにsorted()関数を使用します。そうすれば、要素をニースの予測可能な順序で取得できます(たとえば、後でリストを比較できます)。

_>>> s = set([1, 2, 3, 4, 5])
>>> sorted(s)
[1, 2, 3, 4, 5]
_

もちろん、セット要素はこれが機能するためにソート可能でなければなりません。複素数を並べ替えることはできません(ニブラーのコメントを参照)。 Python 3)では、set([1, 2, 'string'])など、混合データ型のセットを並べ替えることもできません。

sorted(s, key=str)を使用できますが、これらの場合、トラブルに見合う価値はないかもしれません。

65
Petr Viktorin
>>> a = [1, 2, 3, 4, 2, 3]
>>> b = set(a)
>>> b
set([1, 2, 3, 4])
>>> c = list(b)
>>> c
[1, 2, 3, 4]
>>> 
2
sam