我怎么知道每个单词的要点?

2024-04-19 21:14:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个程序,可以计算两个或更多单词的点数。如何获取数组中列表中每个点的值?我已经有一本点词典了。你知道吗

points_dictionary = {
        '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, '#': 0, '0':3
    }

我有一个这样的列表currwords = ['PEARS' 'MANGO' 'ORANGE] 我已经做了一个代码,可以得到每个字母的点,但它的输出增加了所有的点。你知道吗

for you in currwords:
    for yeah in you:
        trans = list(yeah)
        trans = points_dictionary[yeah[0]]
        total_words.append(trans)
        final1 = sum(total_words)
        print(final1)

每次我使用这个代码时,它只输出列表上的总分。我如何在每个单词上得到特别的分数,比如PEAR=6 MANGO=8和ORANGE=7


Tags: 代码inyou列表transfordictionary单词
3条回答

我认为这里的问题是,您在每次迭代时将trans附加到total\单词,但从不重置其值。你可以加一个

total_words = []

在第一圈里面。另外,在for yeah in you循环中,定义trans两次,因此第一次永远不用。更正后,代码应如下所示:

for you in currwords:
    total_words = []
    for yeah in you:
        trans = points_dictionary[yeah]
        total_words.append(trans)
        final1 = sum(total_words)
        print(final1)

可以将summap一起使用:

points_dictionary = {
        '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, '#': 0, '0':3
    }

currwords = ['PEARS', 'MANGO', 'ORANGE']

for word in currwords:
    print(word, sum(map(lambda c: points_dictionary.get(c, 0), word)))

输出

PEARS 7
MANGO 8
ORANGE 7

作为替代,您可以使用generator expression

for word in currwords:
    print(word, sum(points_dictionary.get(c, 0) for c in word))

map和生成器表达式的思想都是将每个单词的字母映射到对应的点值。你知道吗

让我们用传统的方式来做:

points_dictionary = {
        '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, '#': 0, '0':3
    }

currwords = ['PEARS', 'MANGO', 'ORANGE']
sumsOfwords = []
sum = 0
i = -1
for words in currwords:
    for word in words:
        if words == currwords[i + 1]:
            sum = sum + points_dictionary[word]
        else:
            sumsOfwords.append(sum)
            sum = 0
            sum = sum + points_dictionary[word]
            i = i + 1

sumsOfwords.append(sum)
print(sumsOfwords)

输出:

[7, 8, 7]

dictionary = dict(zip(currwords, sumsOfwords))
print(dictionary)

输出:

{'PEARS': 7, 'MANGO': 8, 'ORANGE': 7}

相关问题 更多 >