Python 基于第一个字母的映射字符串
我有一个项目列表,我想根据项目名称的字母混淆。例如:Python 基于第一个字母的映射字符串,python,Python,我有一个项目列表,我想根据项目名称的字母混淆。例如: ABC_Classified BXY_Classified ZX_Classified 关键: 结果: ABC_Classified ==> Adam BXY_Classified ==> Bale ZX_Classified ==> Talking 第一种方法是使用26个if/elif语句,这是非常重复的 完成上述任务的最佳和最简洁的方法是什么?使用字典 mapping = { 'A': 'Adam',
ABC_Classified
BXY_Classified
ZX_Classified
关键:
结果:
ABC_Classified ==> Adam
BXY_Classified ==> Bale
ZX_Classified ==> Talking
第一种方法是使用26个if/elif语句,这是非常重复的
完成上述任务的最佳和最简洁的方法是什么?使用字典
mapping = {
'A': 'Adam',
'B': 'Bale',
'Z': 'Talking'
# etc...
}
name = mapping[your_string[0]]
如果查找失败,它将抛出一个键错误使用字典
mapping = {
'A': 'Adam',
'B': 'Bale',
'Z': 'Talking'
# etc...
}
name = mapping[your_string[0]]
如果查找失败,它将抛出一个KeyError,您可以使用字典将字母映射到名称,然后为不存在的键和索引器捕获KeyError,以防传入空字符串
names = {
'A': 'Adam',
'B': 'Bale',
...
'Z': 'Talking'
}
def obfuscate(s):
try:
return names[s[0]]
except (KeyError, IndexError):
return None
您可以使用字典将字母映射到名称,然后为不存在的键捕获KeyError,并在传入空字符串时捕获IndexError
names = {
'A': 'Adam',
'B': 'Bale',
...
'Z': 'Talking'
}
def obfuscate(s):
try:
return names[s[0]]
except (KeyError, IndexError):
return None
我必须说,我不确定这种混淆的确切目的是什么,但这和你要找的有什么相似吗
# the name strings
names = ["ABC_Classified","BXY_Classified","ZX_Classified"]
# the letter-to-obfuscated string mappings
key = { "A":"Adam", "B":"Bale", "Z":"Talking" }
# doing a lookup
key[ names[0][0] ] # ABC_Classified ==> Adam
# optionally create a new, direct mapping
dict( [ (obf, key[ obf[0] ]), for obf in names ] )
# {'BXY_Classified': 'Bale', 'ABC_Classified': 'Adam', 'ZX_Classified': 'Talking'}
我必须说,我不确定这种混淆的确切目的是什么,但这和你要找的有什么相似吗
# the name strings
names = ["ABC_Classified","BXY_Classified","ZX_Classified"]
# the letter-to-obfuscated string mappings
key = { "A":"Adam", "B":"Bale", "Z":"Talking" }
# doing a lookup
key[ names[0][0] ] # ABC_Classified ==> Adam
# optionally create a new, direct mapping
dict( [ (obf, key[ obf[0] ]), for obf in names ] )
# {'BXY_Classified': 'Bale', 'ABC_Classified': 'Adam', 'ZX_Classified': 'Talking'}