拥有一个字典mydict
,其中id号为键,值为某些字符串。我试图在mydict
中的所有其他值之间比较每个值。
然后,将这些比较的结果保存在另一个字典myresultsdict
中,其中每个键将包含比较的id号对和字符串比较的实际结果< / strong>作为其价值。
我理解如何通过itertools的组合获得组合,但很难拼凑上面提到的myresultsdict
。出于本示例的目的,我使用了一个简单的编辑距离(Levenshtein.distance
),其结果将是'myresultsdict'的值。
from itertools import combinations
import Levenshtein
mydict = {'01': "stringstringstringblah",
'02': "blahstringstringstringblah",
'03': "stringstringstringblahblahblah"}
有人可以提供一些提示,说明如何构建myresultsdict
以获得比较用户ID字符串的元组(即('01','02')
,('01','03')
等),并且每个字符串都有相应的编辑距离结果作为他们的关键?
(道歉,我不能提供更多我尝试的代码,因为我只能弄清楚如何使用列表来查找组合,而不是字典)
答案 0 :(得分:1)
以下是实现任务的简单解决方案。我在combinations
键上使用了mydict
,它返回了你想要的元组。对于每个元组,我计算距离,然后使用相应的结果更新myresultsdict
。
请注意,如果字典中已存在元组,则前一个值(即距离)将被覆盖。
from itertools import combinations
import Levenshtein
mydict = {'01': "stringstringstringblah",
'02': "blahstringstringstringblah",
'03': "stringstringstringblahblahblah"}
myresultsdict = {}
for a, b in combinations(mydict.keys(), 2):
myresultsdict[(a, b)] = Levenshtein.distance(mydict[a], mydict[b])
print(myresultsdict)
输出:
{('01', '02'): 4, ('03', '02'): 12, ('03', '01'): 8}