我的绳子-
name_target = "ARUN GULABRAO INDULKAR"
我想用原始名称和缩写生成所有排列,并为每个排列分配权重-
[ARUNGULABRAOINDULKAR, 1]
[ARUNGINDULKAR, 0.9]
[ARUNGULABRAOI, 0.9]
[AGULABRAOINDULKAR, 0.9]
[ARUNGI, 0.8]
[AGINDULKAR, 0.8]
[AGULABRAOI, 0.8]
[ARUNINDULKARGULABRAO, 1]
[ARUNIGULABRAO, 0.9]
[ARUNINDULKARG, 0.9]
[AINDULKARGULABRAO, 0.9]
[ARUNIG, 0.8]
[AIGULABRAO, 0.8]
[AINDULKARG, 0.8]
[GULABRAOARUNINDULKAR, 1]
[GULABRAOAINDULKAR, 0.9]
[GULABRAOARUNI, 0.9]
[GARUNINDULKAR, 0.9]
[GULABRAOAI, 0.8]
[GAINDULKAR, 0.8]
[GARUNI, 0.8]
[GULABRAOINDULKARARUN, 1]
[GULABRAOIARUN, 0.9]
[GULABRAOINDULKARA, 0.9]
[GINDULKARARUN, 0.9]
[GULABRAOIA, 0.8]
[GIARUN, 0.8]
[GINDULKARA, 0.8]
[INDULKARARUNGULABRAO, 1]
[INDULKARAGULABRAO, 0.9]
[INDULKARARUNG, 0.9]
[IARUNGULABRAO, 0.9]
[INDULKARAG, 0.8]
[IAGULABRAO, 0.8]
[IARUNG, 0.8]
[INDULKARGULABRAOARUN, 1]
[INDULKARGARUN, 0.9]
[INDULKARGULABRAOA, 0.9]
[IGULABRAOARUN, 0.9]
[INDULKARGA, 0.8]
[IGARUN, 0.8]
[IGULABRAOA, 0.8]
不关心这个输出数据结构,它可以是任何东西。如果没有使用缩写和全名,则权重为1
如果使用缩写,重量将减少10%。例如,第二个输出行中的ARUNGINDULKAR
得到了0.9
,因为中间名被缩写了ARUNGI
得到了0.8
,因为中间名和姓氏被缩写了
我已经有效地使用了itertools.permutations(name_target)
来生成第一组置换
我不知道如何组合这些缩写^当被' '
分割时,{
请忽略预期输出中的重复项
您可以将递归与生成器一起使用来构建名称缩写组合
itertools.permutations
还用于创建原始输入名称的所有可能顺序,并且这些全名组合中的每一个都传递给get_combos
,在那里生成缩写组合。布尔标志(True
表示全名,False
表示缩写)与get_combos
中生成的每个名称组件相关联,允许计算权重:输出:
相关问题 更多 >
编程相关推荐