假设我有一个 python 字典:
d = {"a":1, "b":2}
这表示一个字符在字符串中出现的次数。所以上面的字典可以生成“abb”、“bab”或“bba”的字符串。
两个字典之间的最大相似度是一个 >= 0 和 <= 1 的比率,它描述了两个最相似生成的字符串的相似程度。
例如,
d1 = {"a":1, "b":2}
d2 = {"c": 3}
d3 = {"a":1, "d":2}
max_sim(d1, d2) # equals to 0.0 because no indexes
# of an arrangement of ccc matches any indexes of an arrangement of abb
max_sim(d1, d3) # equals to 0.333 because an arrangement of add matches
# one out of three characters of an arrangement of abb
# note that if we compared dda and abb, the similarity ratio would be 0.0
# but we always take into account the most similarly generated strings
如何仅通过查看每个字符的出现次数来生成任何两个字典(相同长度)的最大相似度?即简单地分析字典而不是实际生成字符串并检查每对的相似度。
注意:我在字典上使用 max_sim 而不是字符串,因为我已经遍历了两个字符串来收集它们的字典数据(除了其他东西)。如果我在两个字符串(原始字符串或将字典转换回字符串)上使用 max_sim,我想我只是在做冗余计算。因此,如果答案将两个字典作为输入,我将不胜感激。