2017-07-11 36 views
1

我有一個代碼,在字典(鍵,值)形式中輸出兩個文本之間的差異(單詞,它們出現的次數)的差異。我想創建包含這些單詞的第三個文本。 我的如何在(字符串* 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()) 

代碼做到這一點非常漂亮 - 除了它編譯同一單詞的集羣方式。我得到:

「uponuponuponuponuponuponuponuponuponuponupon
discoverdiscoverdiscoverdiscover學生手勢 frequentlyfrequentlyfrequentlyfrequently費力判斷 無憂無慮destructiondestructiondestruction幾乎佔有 offoffoff iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii safiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafie wellwellwellwellwell thoughtthoughtthoughtthought不可逾越111 命令纖細致命ravineravine創usualusualusual以免 lesslesslessless ambitionambition以爲靠着願望在探索發現探索發現‘等

我曾嘗試在後後後回味 distantdistant」

,而不是’簡單地把這樣的空間

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

它沒有結果。

我看着計算器上的解決方案,以模擬像

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

這就造成了語法錯誤。是否可以在(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()) 
相關問題