我有一个参考字典,“dictA”,我需要将它(计算密钥和vules之间的相似性)与当场生成的n个字典进行比较.每个字典都有相同的长度.让我们说,为了讨论的缘故,将n个字典用于比较它是3:dictB,dictC,dictD.
这是dictA的样子:
dictA={'1':"U", '2':"D", '3':"D", '4':"U", '5':"U",'6':"U"}
以下是dictB,dictC和dictD的样子:
dictB={'1':"U", '2':"U", '3':"D", '4':"D", '5':"U",'6':"D"}
dictC={'1':"U", '2':"U", '3':"U", '4':"D", '5':"U",'6':"D"}
dictD={'1':"D", '2':"U", '3':"U", '4':"U", '5':"D",'6':"D"}
我有一个解决方案,但只是两个字典的选项:
sharedValue = set(dictA.items()) & set(dictD.items())
dictLength = len(dictA)
scoreOfSimilarity = len(sharedValue)
similarity = scoreOfSimilarity/dictLength
我的问题是:
如何用dictA作为主词典来迭代n个词典,我将其他词典与其他词典进行比较.我的目标是为每个字典获取一个“相似性”值,我将针对主要字典进行迭代.
谢谢你的帮助.
最佳答案 这是一个通用结构 – 假设您可以单独生成字典,在生成下一个字典之前使用每个字典.这听起来像你可能想要的. calculate_similarity将是一个包含上面“我有一个解决方案”代码的函数.
reference = {'1':"U", '2':"D", '3':"D", '4':"U", '5':"U",'6':"U"}
while True:
on_the_spot = generate_dictionary()
if on_the_spot is None:
break
calculate_similarity(reference, on_the_spot)
如果您需要迭代已经生成的字典,那么您必须将它们放在可迭代的Python结构中.在生成它们时,创建一个字典列表:
victim_list = [
{'1':"U", '2':"U", '3':"D", '4':"D", '5':"U",'6':"D"},
{'1':"U", '2':"U", '3':"U", '4':"D", '5':"U",'6':"D"},
{'1':"D", '2':"U", '3':"U", '4':"U", '5':"D",'6':"D"}
]
for on_the_spot in victim_list:
# Proceed as above
你熟悉Python构造生成器吗?它就像一个函数,它以yield而不是return返回它的值.如果是这样,请使用它而不是上面的列表.