python中的字母分数

时间:2015-10-11 22:51:27

标签: python

以下是给定的拼字游戏得分列表:

 scrabbleScores = [ ["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] ] 

我想使用功能“ def letterScore(letter,scoreless):”获得该字母的分数。 它看起来像:

letterScore("c", scrabbleScores)
3

请帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

正如Paul Rooney所说,最简单(也是最有效!)的方法是使用字典而不是列表。但是,如果出于某种原因,您仍然希望或需要以列表的形式存储数据,则可以使用以下函数:

def letterScore(letter, scoreless):
    scoreless = dict(scoreless)
    print(scoreless[letter])

该函数将列表转换为字典,然后您可以通过它们非常轻松有效地获取值(这是您在函数中请求的参数)。

答案 1 :(得分:0)

您可以使用list_comprehension或字典方法。

>>> scrabbleScores = [ ["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] ]
>>> def letterSCore(letter, lis):
    for i in lis:
        if i[0] == letter:
            return i[1]


>>> print(letterSCore("c", scrabbleScores))
3
>>> 

>>> def letterSCore(letter, lis):
    return next(i[1] for i in lis if i[0] == letter)

>>> print(letterSCore("c", scrabbleScores))
3

这将遍历列表中的每个项目并返回item[1],即仅当索引0的项目等于您给出的字母时才返回索引1的项目。

>>> dic = {i[0]:i[1] for i in scrabbleScores}
>>> dic["c"]
3