我有一个代码,用于在字典(键,值)形式中输出两个文本之间的差异(单词,它们出现的次数)。我想创建一个仅包含这些单词的第三个文本。 我的代码
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)对中插入空格?
答案 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())