Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的字典:对搜索键返回的值求和_Python_Dictionary_Sum - Fatal编程技术网

python中的字典:对搜索键返回的值求和

python中的字典:对搜索键返回的值求和,python,dictionary,sum,Python,Dictionary,Sum,我只是在学习Python,所以这可能非常简单。我试图在字典中找到与键匹配的值,并将它们相加。我已经编写了查找值的代码,并且可以打印出来(在在线Python教程中进行测试,看看会发生什么),但我不知道如何将其作为总分,返回正确的分数(6)。我知道目前这不是一个功能 SCRABBLE_LETTER_VALUES = { 'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1, 'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8,

我只是在学习Python,所以这可能非常简单。我试图在字典中找到与键匹配的值,并将它们相加。我已经编写了查找值的代码,并且可以打印出来(在在线Python教程中进行测试,看看会发生什么),但我不知道如何将其作为总分,返回正确的分数(6)。我知道目前这不是一个功能

    SCRABBLE_LETTER_VALUES = {
        'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1, 'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8, 'k': 5, 'l': 1, 'm': 3, 'n': 1, 'o': 1, 'p': 3, 'q': 10, 'r': 1, 's': 1, 't': 1, 'u': 1, 'v': 4, 'w': 4, 'x': 8, 'y': 4, 'z': 10
    }
word ='tact'
score =0

for i in range(len(word)):
    for letter,score in SCRABBLE_LETTER_VALUES.items():
        if letter == word[i]:
            print score
在这里:

  • word中l的
    迭代
    word的字母
  • SCRABBLE_LETTER_VALUES[l]
    获取
    SCRABBLE_LETTER_VALUES
    的相应条目
  • sum(…)
    将它们相加
  • sum()
    中的构造称为a

    在这里:

  • word中l的
    迭代
    word的字母
  • SCRABBLE_LETTER_VALUES[l]
    获取
    SCRABBLE_LETTER_VALUES
    的相应条目
  • sum(…)
    将它们相加

  • sum()
    中的构造称为a。

    如果我是你,我会使用这段代码:

    score = 0
    word = 'tact'
    for letter in word:
        score += SCRABBLE_LETTER_VALUES[letter]
    print score
    
    还有更有效的方法,例如NPE提到的方法,但是如果你只是一个初学者,我更喜欢使用(和理解)这种方法


    上述代码的作用,逐行:

    1) 首先,我们使用
    for
    -循环迭代
    单词中的每个字母:

    for letter in word:
    
    2) 对于每个字母,我们按照您在
    SCRABBLE\u letter\u值中定义的相应金额增加
    分数
    变量
    ,如下所示:

    score = score + SCRABBLE_LETTER_VALUES[letter]
    
    使用
    +=
    可以更轻松地编写此代码:

    score += SCRABBLE_LETTER_VALUES[letter]
    
    3) 最后我们打印分数:

    print score
    

    如果我是你,我会使用以下代码:

    score = 0
    word = 'tact'
    for letter in word:
        score += SCRABBLE_LETTER_VALUES[letter]
    print score
    
    还有更有效的方法,例如NPE提到的方法,但是如果你只是一个初学者,我更喜欢使用(和理解)这种方法


    上述代码的作用,逐行:

    1) 首先,我们使用
    for
    -循环迭代
    单词中的每个字母:

    for letter in word:
    
    2) 对于每个字母,我们按照您在
    SCRABBLE\u letter\u值中定义的相应金额增加
    分数
    变量
    ,如下所示:

    score = score + SCRABBLE_LETTER_VALUES[letter]
    
    使用
    +=
    可以更轻松地编写此代码:

    score += SCRABBLE_LETTER_VALUES[letter]
    
    3) 最后我们打印分数:

    print score
    

    为什么会有反对票?我不会通过先教
    sum()
    和列表理解来教初学者Python。谢谢你的详细回答和解释-这真的很有帮助为什么会有人投反对票?我不会通过先教
    sum()
    和列表理解来教初学者Python。感谢您的详细回答和解释-这真的很有帮助。Fulop只是学习,所以这是map and reduce毫无价值。word中l的表达式SCRABBLE_LETTER_VALUES[l]是一个映射函数,sum是一个reduce函数。非常感谢您的快速响应和解释-我到处都在搜索一个简单的答案。OP只是在学习,所以这是map and reduce毫无价值。word中l的表达式SCRABBLE_LETTER_VALUES[l]是一个映射函数,sum是一个reduce函数。非常感谢您的快速响应和解释-我到处都在寻找简单的答案。