python - 计算合并字符串的分数

标签 python string list

我试图弄清楚如何计算两个合并的姓名列表的分数。我需要为每个字符(包括名字和姓氏之间的空格)打一分,并为名字中的每个元音打一分。

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/

相关文章:

python - 名称错误 : name 'urlpatterns' is not defined

python - 如何打印键 :value list from a YAML file? 中的特定值

Python:将列表字典转换为元组列表

java - 将运算符和操作数输入到两个不同的堆栈中

javascript - 给定一个数组,找到两个最短的字符串,提取它们并将它们附加到末尾,直到只剩下一个字符串

python - SWIG:如何将复杂列表从 C++ 传递到 Python

python - 具有任意数量输入 channel (多于 RGB)的卷积神经网络架构

python - 如何使用Python将Json线转换为 Parquet ?

python - 从给定范围内选择整数

python - Python .csv 文件中字段的 boolean 值