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
其中得分[关键]表示在那个特定的键作为一个整体的价值。有没有办法将一个关键字与该字母进行比较,而不是该值?
我的目标是比较“单词”中的“字母”与字典中的键,并将值添加到字符中并返回结果。
看起来你很奇怪地想着这件事。所有你需要做的是检查这封信是否在你的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”。希望这可以帮助。
'对于字母中的字母:res + = score.get(letter,0)' – 2015-02-23 07:23:43
您是否试图检查字母是否属于字典中的一个键? – bereal 2015-02-23 07:24:00
'dict'应该是'score'...吗? – deceze 2015-02-23 07:24:37