假设我有一个包含10个值的10个键的字典,我想从字典中提取5个值。
然后我想得到我从字典中提取的值的总和。我怎么能这样做?
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 scrabble_score(word):
s = list(word)
for char in s:
numbers =[]
numbers.append(score[char])
print numbers
scrabble_score("overflaw")`
现在我需要从打印中总结数字,我该怎么做?
答案 0 :(得分:2)
给出一本字典:
the_dict = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9}
以及要提取的值的键:
the_keys = ['a', 'd', 'c', 'f', 'h']
总和(列表理解),例如
a = sum([the_dict[key] for key, value in the_dict.items() if key in the_keys])
将返回提取的键的值的总和。这可以通过以下方式放入函数中:
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 scrabble_score(word):
numbers = [score[char] for char in list(word)]
print(numbers)
return sum(numbers)
the_word = list('hijab')
print(scrabble_score(the_word))
答案 1 :(得分:0)
要从密钥中提取字典中的值,您必须执行score[char]
- >数字,如score['a'] -> 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 scrabble_score(word):
for char in word:
numbers = []
numbers.append(score[char])
print numbers
scrabble_score("overflaw")
顺便说一下,我编辑了你的代码,这样它就不会把字符串变成一个列表......你已经可以遍历字符串了。
然后,
现在我需要从打印中总结数字,我该怎么做?
好吧,只需使用sum()
功能,如下所示:
def scrabble_score(word):
numbers = []
for char in word:
numbers.append(score[char])
return sum(numbers)
sum()
返回列表中所有值的总和(链接到文档)
编辑:感谢aaron指出一个错误,你不能每次都在循环中设置数字,每次都会使它变空。
P.S。在看这里之前学会搜索网络+文档;特别是文档。看看吧。
答案 2 :(得分:0)
如果我理解这个问题,听起来你想要这样简单的东西:
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 scrabble_score(word):
print sum(score[ch] for ch in word)
scrabble_score("overflaw")