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

时间:2015-02-23 07:20:34

标签: 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

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

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

6 个答案:

答案 0 :(得分:7)

看起来你在想这个奇怪的事。您需要做的就是检查这封信是否在您的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])

答案 1 :(得分:1)

score = {"a": 1, ...}

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

那可能是你想要的。如果您确定if letter in score中的所有字母都存在,您甚至可以省略score。你真的不需要比较任何东西。

答案 2 :(得分:1)

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 letter in score:
          res += score[letter]
    return res

答案 3 :(得分:0)

正如亚当的另一个答案所指出的那样,你是以一种奇怪的方式思考这个问题。没有办法使用类似score['*get_me_the_key*']的东西来获取字典分数的关键字。

如果你真的想要钥匙。 score.keys()将为您提供字典中的键列表。像这样:

keys = score.keys()
print keys
['a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j', 'm', 'l', 'o', 'n', 'q', 'p', 's', 'r', 'u', 't', 'w', 'v', 'y', 'x', 'z']

答案 4 :(得分:0)

dict = {"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 letter in dict:

      res += dict['letter']

return res

示例:

dict['c']

得到相应的值3

答案 5 :(得分:0)

我在Codecademy:Python课程中认识到了这个问题。在您遇到的问题中,您必须在函数的开头添加word = word.lower()。否则,如果您检查包含大写字母的单词,程序将收到错误。换句话说," D"不在字典里,但是" d"是。希望这会有所帮助。