将字典应用于字符串句子

时间:2018-04-21 18:46:04

标签: python string python-2.7 dictionary

是否有快速方法将为给定数量的字母定义的字典应用于包含多个字母的字符串格式化字词?

e.g。

def decode(code):
key = {"a":1,"b":2,"c":3,"d":4,"e":5}
return key[code]


print decode("eddcab")

从这个

回来
544312

我知道它并不能简单地解决这个问题,但是有一些技巧或简单方法可以解决这个问题,或者我需要从索引[1:2]中分别定义操作,然后从[2: 3]直到我到达字符串的末尾?
我正在使用python 2.7

我感谢任何与此相关的提示或建议。

2 个答案:

答案 0 :(得分:2)

使用列表推导中的字典值重建数字,默认为0:

def decode(code):
    key = {"a":1,"b":2,"c":3,"d":4,"e":5}
    return "".join([str(key.get(c,"0")) for c in code])

print(decode("eddcab"))

结果:

544312

根据您根本不需要字典的值,只需使用偏移字符代码:

def decode(code):
    return "".join([str(ord(c)-ord('a')+1) for c in code])

答案 1 :(得分:0)

from string import maketrans

def decode(code):
    key = {"a":1,"b":2,"c":3,"d":4,"e":5}
    keys, values = zip(*key.items())
    return code.translate(maketrans(''.join(keys), ''.join(map(str, values))))

如果dict的值可以是字符串,则不需要map(str, values)

如果values可以是字符串,则可以进一步简化:

def decode(code):
    key = {'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4'}

    return code.translate(
        maketrans(
            *map(''.join, zip(*key.items()))
            )
        )