以下是给定的拼字游戏得分列表:
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
请帮助,谢谢。
答案 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