擅长:python、mysql、java
<p>你的<code>replace_dict</code>想法很接近,但最好是“把”这句话“翻出来”,即把它从<code>{'v': 'aei', 'c': 'bc'}</code>变成{<cd3>}。在</p>
<pre class="lang-py prettyprint-override"><code>def get_replace_map_from_dict(replace_dict):
replace_map = {}
for cls, chars in replace_dict.items():
replace_map.update(dict.fromkeys(chars, cls))
return replace_map
def replace_with_map(s, replace_map):
return "".join(replace_map.get(c, c) for c in s)
VOWELS = "aeiou"
CONSONANTS = "bcdfghjklmnpqrstvwxyz"
replace_map = get_replace_map_from_dict(
{"v": VOWELS, "V": VOWELS.upper(), "c": CONSONANTS}
)
print(replace_with_map("Accommodation, thanks!", replace_map))
</code></pre>
<p>上面的<code>replace_with_map</code>函数保留了所有未映射的字符(但是您可以使用第二个参数将其更改为<code>.get()</code>),因此输出为</p>
<blockquote>
<p>Vccvccvcvcvvc, ccvccc!</p>
</blockquote>