【发布时间】:2018-03-16 15:28:00
【问题描述】:
我正在根据字符串编辑距离进行一些实体匹配,我的结果是一个字典,其中包含基于某些评分标准的键(查询字符串)和值 [相似字符串列表]。
例如:
results = {
'ben' : ['benj', 'benjamin', 'benyamin'],
'benj': ['ben', 'beny', 'benjamin'],
'benjamin': ['benyamin'],
'benyamin': ['benjamin'],
'carl': ['karl'],
'karl': ['carl'],
}
每个值也有一个对应的字典项,它是它的键(例如'carl'和'karl')。
我需要组合具有共同价值的元素。选择一个值作为新键(假设是最长的字符串)。在上面的例子中,我希望得到:
results = {
'benjamin': ['ben', 'benj', 'benyamin', 'beny', 'benjamin', 'benyamin'],
'carl': ['carl','karl']
}
我尝试过使用键迭代字典,但我无法理解如何迭代和比较每个字典项及其值列表(或单个值)。
【问题讨论】:
-
应该仅在值重叠时合并列表,还是应该每个值查找匹配的键,然后根据这些值合并?编辑:如果我理解你的例子,我猜是后者。
-
我应该说,每个值也将是一个带有自己字典项的键。
-
有点不相关,但你不应该混合字符串和列表作为你的字典的值——即使你有一个字符串,它也应该包含在一个列表中。通过避免特殊情况,这将使您的代码更简单、更健壮。
-
你能展示你的尝试吗?
-
评分标准是否对称?如果
similarity(a, b)是提供评分标准的函数,那么similarity(a, b)是否返回与similarity(b, a)相同的结果?
标签: python dictionary