擅长:python、mysql、java
<p><code>key = key.replace(' ',"")</code>不影响字典中的实际键,它正在更改该键的一个副本。您需要使用新键将值添加到字典中,然后删除旧键。有一种方法:</p>
<pre><code>def query_combination(sentence, mydict):
for old_key, new_key in [(key, key.replace(' ', '')) for key in mydict if ' ' in key]:
mydict[new_key] = mydict.pop(old_key)
sentence = sentence.replace(old_key, new_key)
</code></pre>
<p>但是,请注意,您正在替换字符串<code>sentence</code>中的键,但是<code>sentence</code>对于函数<code>query_combination()</code>是本地的,因此外部作用域<code>sentence</code>不受替换的影响。我不确定您是否希望您的代码会这样做,但如果是这样,您可以简单地从函数返回修改后的<code>sentence</code>,或者将其作为一个项包含在字典中。你知道吗</p>
<p>考虑到<code>sentence</code>实际上并没有被函数更新,您可以将整个函数简化为字典理解:</p>
<pre><code>>>> mydict = {'films': {'match': ['Space', 'Movie', 'six', 'two', 'one']}, u'Popeye Doyle': {'score': 100, 'match': [u'People', 'heaven', 'released']}}
>>> mydict = {key.replace(' ', '') : value for key, value in mydict.items()}
>>> mydict
{'films': {'match': ['Space', 'Movie', 'six', 'two', 'one']}, u'PopeyeDoyle': {'score': 100, 'match': [u'People', 'heaven', 'released']}}
</code></pre>