2017-07-11 7 views
1

私は、辞書(キー、値)形式で(単語、表示された時に)2つのテキスト間の違いを出力するコードを持っています。私はそれらの単語だけを含む3番目のテキストを作成したいと思います。 (文字列* n)操作の単語間のスペースを印刷する方法は?

from collections import Counter 
a = wordlist1 
b = wordlist2 
a_counter = Counter(a) 
b_counter = Counter(b) 

outcome2 = b_counter - a_counter 
#print outcome2.items() 
print " ".join (k*v for (k,v) in outcome2.iteritems()) 

の私のコードは非常にうまくこれを行う - それは同じ単語のクラスタをコンパイルする方法を除いて。私が取得:


discoverdiscoverdiscoverdiscover学生ジェスチャーuponuponuponuponuponuponuponuponuponuponupon frequentlyfrequentlyfrequentlyfrequently面倒判断 快活なdestructiondestructiondestructionはほとんど iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii offoffoff safiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafieを充当していませんwellwellwellwellwell thoughtthoughtthoughtthought lesslesslesslessのambitionambition fancying願望は、私が試してみました等 『

を発見発見発見発見時に上に上に上に上に distantdistant」

の代わりに』覚えないように乗り越えられない111 コマンド細長く致命的なravineravineの作成者はusualusualusualこのようなスペースを入れるだけでいいです。この結果はありません。

私は、構文エラーが生じた

print " ".join (k*(" " v) for (k,v) in outcome2.iteritems()) 
print " ".join (k*(" " + v) for (k,v) in outcome2.iteritems()) 

のようなエミュレートするためのソリューションのためのstackoverflowに見えました。 (k、v)ペア内にスペースを挿入することは可能ですか?

+0

'K * v' - >'(K + ' ')* v' –

+1

実は、あなたが欲しいよ( '(K +'')* V).rstrip()'。 –

答えて

0

空きスペースを挿入する方法は、joinにすることです。 *で文字列を繰り返す代わりに、多くの文字列をjoin呼び出しに送ります。 Counterは、便利なことを行うための方法を提供します:

print ' '.join(outcome2.elements()) 

elementsは、それに関連付けられたカウント何度でも各キーを生成するイテレータを生成します。

elementsはものではありませんでした場合は、手動で繰り返しを行う可能性が:

print ' '.join(k for k in outcome2 for i in xrange(outcome2[k])) 
+0

ありがとうございました!私はすでにColdspeedのコメントに基づいてそれを解決しましたが、あなたのソリューションは、私が似たようなコードのために念頭に置いているものです – Maartje

0

あなたは別のjoin文でそれを行うことができます。

print " ".join (' '.join([k]*v) for (k,v) in outcome2.iteritems()) 
関連する問題