web-dev-qa-db-ja.com

リストから個別の値のみを取得する方法は?

テキストファイルの列を反復処理しようとしています。各エントリには3つの選択肢しかないA, B, and C

さまざまな種類の選択肢の数を特定したい(another text file has A, B, C, and D)ですが、列の各要素を100 entriesをリストに追加すると、各タイプが複数回繰り返されます。たとえば、これを行うと、リストは[A,A,A,B,C,C,D,D,D,B,B...]ですが、無関係なエントリを削除して、リストに識別可能なタイプを表示したいだけです[A,B,C,D]、エントリの数に関係なく。

多くの一般的な要素を含むリストを、区別可能な異なる要素のみが表示されるリストに縮小する方法はありますか?ありがとう!

望ましい出力:

[A, B, C, D]

2
Ferreroire

itertools.groupbysortedを使用して、この一意の要素のリストを取得できます

from itertools import groupby

with open('text.txt') as f:
    content = [line.strip('\n') for line in f]

l = [k for k, g in groupby(sorted(content))]
print(l)
# ['A', 'B', 'C', 'D']
0