私は次のようなファイルを持っています:
q12j4
q12j4
fj45j
q12j4
fjmep
fj45j
今私がやりたかったのは:
- エントリが繰り返されているかどうかを確認し、
もしそうなら、エントリを一度印刷し、それらは繰り返されず、通常どおり印刷します。
出力は次のようになります。q12j4 fj45j fjmep
【繰り返し省略】
関数でやろうとしていましたdefaultdict
が、文字列ではうまくいかないと思います。
助けてください..
私は次のようなファイルを持っています:
q12j4
q12j4
fj45j
q12j4
fjmep
fj45j
今私がやりたかったのは:
もしそうなら、エントリを一度印刷し、それらは繰り返されず、通常どおり印刷します。
出力は次のようになります。
q12j4
fj45j
fjmep
【繰り返し省略】
関数でやろうとしていましたdefaultdict
が、文字列ではうまくいかないと思います。
助けてください..
これで大まかに十分です。
with open('file.txt', 'r') as f:
for line in set(f):
print line
def unique(seq):
seen = set()
for val in seq:
if val not in seen:
seen.add(val)
yield val
with open('file.txt') as f:
print ''.join(unique(f))
ご覧のとおり、イテラブルから重複を削除する別のジェネレーターを作成することにしました。このジェネレータ はunique()
、他の多くのコンテキストでも使用できます。
seen = set()
with open(filename, 'r') as f:
for line in f:
if line not in seen:
print line
seen.add(line)
itertools.groupby 関数を使用する必要があります。使用例については、標準ライブラリまたはこの関連する質問を参照してください: How do I use Python's itertools.groupby()?
エントリが繰り返されるリストを次のように仮定しtoorder
ます。
import itertools
toorder = ["a", "a", "b", "a", "b", "c"]
for key, group in itertools.groupby(sorted(toorder)):
print key
出力する必要があります:
a
b
c