如何从字典中提取值?

时间:2015-06-24 02:06:09

标签: python

假设我有一个包含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")`

现在我需要从打印中总结数字,我该怎么做?

3 个答案:

答案 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")