如何从字典的值中获取key_name?

时间:2019-07-13 09:57:03

标签: python python-3.x dictionary

我想从值中获取密钥名称,因为我想创建一个单词加密器/解密器程序。

我希望值1Q为字母“ a”。

words = {
    'a' : '1Q',
    'b' : '2E',
    'c' : '3T',
    'd' : '4U',
    'e' : '5O',
    'f' : '6W',
    'g' : '7R',
    'h' : '8Y',
    'i' : '9I',
    'j' : '0P',
    'k' : 'A0',
    'l' : 'D1',
    'm' : 'G2',
    'n' : 'J3',
    'o' : 'L4',
    'p' : 'S5',
    'q' : 'F6',
    'r' : 'H7',
    's' : 'K8',
    't' : 'Z9',
    'u' : 'CC',
    'v' : 'BB',
    'w' : 'MM',
    'x' : 'XS',
    'y' : 'VZ',
    'z' : 'NS',
}

def Text_To_Hash(Text):
    val = ''
    Text_ = Text.lower()
    for i in Text_:
        if i == ' ':
            val += 'LK'
        else:
            val += str(words[i])
    return val

Input = input("Enter a value: ")

print(Text_To_Hash(Input))

没有错误。我想要值的键名。

我该如何解决问题?

2 个答案:

答案 0 :(得分:1)

尝试循环浏览字典。

def Text_To_Hash(Text):
    val = ''
    Text_ = Text.lower()
    for i in Text_:
        for key in words:
            if words[key] == i:
                val += key
    return val

答案 1 :(得分:0)

为了有效地做到这一点(时间,而不是空间),我建议创建自己的类,基本上是将两个不同的字典包装在一起。因此,它可能看起来像这样:

class TwoWayDict:
    def __init__(self):
        self.dict1 = {}
        self.dict2 = {}

    def insert(self, key, value):
        if key in self.dict1.keys() or key in self.dict2.keys():
            raise ....some exception about the key already existing....
        self.dict1[key] = value
        self.dict2[value] = key

    def getValueFromKey(self, key):
        return self.dict1[key]

    def getKeyFromValue(self, value):
        return self.dict2[value]

这显然还没有完全充实,但我希望它显示出基本原理。