python - 如何将字典的键与字符串字符进行比较

Ans*_*yas 1 python dictionary

我是python的新手,我需要将字符串中的字符与字典中的键进行比较.但是我无法想出一种方法来将这个角色与一把钥匙进行比较.我只能将它与dict [key]的值进行比较

我试图实现这样的事情:

score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
     "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
     "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
     "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
     "x": 8, "z": 10}

def compare(word):
   res = 0
   for letter in word:
       if score[**What should i put in here**] == letter:
          res += score[letter]
   return res
Run Code Online (Sandbox Code Playgroud)

score [key]表示整个特定键的值.有没有办法比较一个键到字母,而不是值?

我的目的是将"word"中的"字母"与字典中的键进行比较,并根据字符添加值并返回结果.

Ada*_*ith 7

看起来你正在考虑这个奇怪的事情.您需要做的就是检查字母是否在您的score字典中,如果是,则将该数字添加到您的总数中.

def compare(word):
    res = 0
    for letter in word:
        if letter in score:
            res += score[letter]
    return res
Run Code Online (Sandbox Code Playgroud)

但是,有一种更简单的方法可以做到这一点.由于您只是res用作累加器,因此可以添加score[letter]它是否存在或0是否存在.使用该dict.get方法很容易.

def compare(word):
    res = 0
    for letter in word:
        res += score.get(letter, 0)
        # dict.get(key, defaultvalue)
    return res
Run Code Online (Sandbox Code Playgroud)

事实上,你甚至可以把它变成丑陋的lambda.

compare = lambda word: sum([scores.get(letter,0) for letter in word])
Run Code Online (Sandbox Code Playgroud)