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

问题描述:

我是python的新手,我需要将字符串中的字符与字典中的键进行比较。但我无法找出一种方法来比较这个人物与一把钥匙。我只能给它的价值在字典比较[关键]python - 如何将字典的键与字符串字符进行比较

我想实现这样的事情:

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 

其中得分[关键]表示在那个特定的键作为一个整体的价值。有没有办法将一个关键字与该字母进行比较,而不是该值?

我的目标是比较“单词”中的“字母”与字典中的键,并将值添加到字符中并返回结果。

+0

'对于字母中的字母:res + = score.get(letter,0)' – 2015-02-23 07:23:43

+0

您是否试图检查字母是否属于字典中的一个键? – bereal 2015-02-23 07:24:00

+0

'dict'应该是'score'...吗? – deceze 2015-02-23 07:24:37

看起来你很奇怪地想着这件事。所有你需要做的是检查这封信是否在你的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]) 

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

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

这可能是你想要的。如果您确定所有信件都存在于score中,您甚至可以省略if letter in score。你真的不需要比较什么。

由于亚当的其他回答指出你正在以一种奇怪的方式思考这件事。没有办法使用类似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'] 

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

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 

我认识到这个问题的Codecademy网站:Python的课程。在你正在做的问题中,你必须在函数的开始处添加word = word.lower()。否则,如果您检查包含大写字母的单词,程序将会出错。换句话说,“D”不在词典中,而是“d”。希望这可以帮助。