如何在(字符串* n)操作的单词之间打印空格?

时间:2017-07-11 22:14:02

标签: python python-2.7 dictionary

我有一个代码,用于在字典(键,值)形式中输出两个文本之间的差异(单词,它们出现的次数)。我想创建一个仅包含这些单词的第三个文本。 我的代码

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
  发现发现学生的手势   经常经常是费力的判断   轻松的破坏破坏建筑几乎没有占用   offoffoff   iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii   safiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafiesafie   井井井井井井井井井智的思想是不可逾越的   命令苗条致命的ravineravine创造者通常,以免   无望的野心,幻想的回忆   distantdistant"

代替"在发现之后发现发现发现"等

我试过简单地放入像这样的空格

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

没有结果。

我在stackoverflow上查找了模拟

的解决方案
print " ".join (k*(" " v) for (k,v) in outcome2.iteritems()) 
print " ".join (k*(" " + v) for (k,v) in outcome2.iteritems()) 

导致语法错误。是否可以在(k,v)对中插入空格?

2 个答案:

答案 0 :(得分:0)

插入所需空格的方法是join执行此操作。不是使用*重复字符串,而是将许多字符串提供给join调用。 Counter方便地提供了一种方法:

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

elements将产生一个迭代器,它产生的每个键的次数与其关联的次数一样多。

如果elements不是,那么你可以手动重复:

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

答案 1 :(得分:0)

您可以使用其他join声明执行此操作。

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