Skip to main content
 首页 » 编程设计

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

2025年05月04日23lyj

我是 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 

其中 score[key] 表示整个特定键的值。有没有办法将键与字母而不是值进行比较?

我的目标是将“word”中的“字母”与字典中的键进行比较,并将值与字符相加并返回结果。

请您参考如下方法:

看起来你正在奇怪地思考这个问题。您需要做的就是检查该字母是否在您的 score 字典中,如果是,将该数字添加到您的总数中。

def compare(word): 
    res = 0 
    for letter in word: 
        if letter in score: 
            res += score[letter] 
    return res 

不过,有一种更简单的方法可以做到这一点。由于您只是将 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 

事实上你甚至可以把它变成一个丑陋的lambda。

compare = lambda word: sum([scores.get(letter,0) for letter in word])