Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于第一个字母的映射字符串_Python - Fatal编程技术网

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'}