これは特に綺麗ではありませんが、私が考えることができるほとんどの場合はうまくいくようです。私はこれもあまりにも整理することができ、大文字と小文字を区別しないようにするのは簡単だろうと確信しています。
def freqs(list):
words = {}
for word in list:
words[word] = words.get(word, 0) + 1
return words
def added_and_removed(a, b):
af = freqs(a.split())
bf = freqs(b.split())
removed = []
added = []
for key in af:
num = bf.get(key)
if num == None:
if af[key] > 1:
words = [key]*af[key]
removed.extend(words)
else:
removed.append(key)
for key in bf:
num = af.get(key)
if num == None:
added.append(key)
elif num > 1:
words = [key]*(num-1)
removed.extend(words)
return added, removed
a = 'hello hello hello my name is Dave dave bar foo'
b = 'hello my guys is test easy rob dave beef foo'
added, removed = added_and_removed(a, b)
print added
print removed
のpythonについて覚えておくべき最初の事は、それが "電池が含まれている" したことである
['beef', 'rob', 'easy', 'test', 'guys']
['bar', 'name', 'Dave', 'hello', 'hello']
は ''と ' "世界こんにちは" "Hello World" の'のための所望の出力を何? –
提案したような例はもうありますか? – jamylak
あなたの例が「最高ではなかった」場合は、改善してください。予想される入力と期待される出力のリストは非常に役に立ちます。 – bukzor