我正在寻找一种将字符组映射到单个字符的有效方法。
目前,我的代码类似于以下内容:
example = 'Accomodation'
VOWELS = 'aeiou'
CONSONANTS = 'bcdfghjklmnpqrstvwxyz'
output = ''
for char in example:
if char in VOWELS:
output += 'v'
elif char in VOWELS.upper():
output += 'V'
elif char in CONSONANTS:
....
最终它会返回,在这个例子中,Vccvcvcvcvvc
。
我想让这部分更有效率:
for char in example:
if char in VOWELS:
output += 'v'
elif char in VOWELS.upper():
output += 'V'
elif char in CONSONANTS:
....
理想情况下,该解决方案将允许将字符字典映射为键,它们的值是选项列表。例如
replace_dict = {'v': VOWELS,
'V': VOWELS.upper(),
'c': CONSONANTS,
...
我不太熟悉 map
,但我希望解决方案能以某种方式利用它。
研究
我在这里发现了类似的问题:python replace multiple characters in a string
该问题的解决方案表明我需要类似的东西:
target = 'Accomodation'
charset = 'aeioubcdfghjklmnpqrstvwxyzAEIOUBCDFGHJKLMNPQRSTVWXYZ'
key = 'vvvvvcccccccccccccccccccccVVVVVCCCCCCCCCCCCCCCCCCCCC'
但是,我不认为赋值看起来特别清楚——尽管它节省了一段 if
/else
语句。此外,如果我想添加更多字符集,分配的可读性会更差,例如针对不同的外文字符集。
任何人,也许对内置函数有更好的了解,都可以提供一个比上述两个示例更有效/更干净的示例吗?
我也乐于接受其他不需要使用字典的想法。
解决方案应该在python3
中。
最佳答案
创建这样一个字典有更有效的方法:
example = 'Accomodation'
VOWELS = 'aeiou'
CONSONANTS = 'bcdfghjklmnpqrstvwxyz'
replace_dict = {
**{v: 'v' for v in VOWELS},
**{V: 'V' for V in VOWELS.upper()},
**{c: 'c' for c in CONSONANTS}
}
print(''.join(replace_dict[s] for s in example))
# Vccvcvcvcvvc
关于python - 如何更有效地将字符串中的多个字符映射为单个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55018788/