我试图弄清楚如何计算两个合并的姓名列表的分数。我需要为每个字符(包括名字和姓氏之间的空格)打一分,并为名字中的每个元音打一分。
a = ["John", "Kate", "Oli"]
b = ["Green", "Fletcher", "Nelson"]
vowel = ["a", "e", "i", "o", "u"]
gen = ((x, y) for x in a for y in b)
for u, v in gen:
print u, v
我正在努力弄清楚该怎么做。任何帮助将不胜感激。
最佳答案
因此,您首先zip
名字和姓氏,然后使用' '
作为分隔符str
。然后用collections.Counter
计算所谓的元音字符出现的次数,将它们求和
,并添加全名的len
。这将是 dict
对象,然后你可以用它做任何你喜欢的事情。
from collections import Counter
a = ["John", "Kate", "Oli"]
b = ["Green", "Fletcher", "Nelson"]
vowel = ["a", "e", "i", "o", "u"]
output = {}
for item in [' '.join(i) for i in zip(a,b)]:
output[item] = sum(Counter(item)[x] for x in vowel) + len(item)
output
输出:
{'John Green': 13, 'Kate Fletcher': 17, 'Oli Nelson': 13}
更新
如果您需要名字和姓氏的所有可能变体,您可以使用 itertools.product
来实现。
from itertools import product
from collections import Counter
a = ["John", "Kate", "Oli"]
b = ["Green", "Fletcher", "Nelson"]
vowel = ["a", "e", "i", "o", "u"]
output = {}
for item in [' '.join(i) for i in product(a,b)]:
output[item] = sum(Counter(item)[x] for x in vowel) + len(item)
output
输出:
{'John Fletcher': 16,
'John Green': 13,
'John Nelson': 14,
'Kate Fletcher': 17,
'Kate Green': 14,
'Kate Nelson': 15,
'Oli Fletcher': 15,
'Oli Green': 12,
'Oli Nelson': 13}
关于python - 计算合并字符串的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002581/