You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除字典中被其他键包含的相似键并保留较长键

字典子串键清理问题

场景与需求

现有字典存储如下两组键值对:

  • 键Bob,对应值Number
  • 键Bobby,对应值Number

需要实现的逻辑为:移除所有键名是其他键名子串的键值对,例如Bob是Bobby的组成部分,就保留键名更长的Bobby条目,删除短键Bob对应的条目。

初期踩坑

最开始尝试用嵌套循环搭配Instr函数实现:只要某个键名出现在其他键名中,就移除该键。但逻辑没有排除键与自身的匹配判断,会导致所有键都被误删。
初期仅需要概念层面的实现思路,不需要直接提供完整代码。


实现方案

最终通过计数器思路解决问题:新增similar_words计数器变量,遍历校验每个键时,统计该键作为子串出现在所有字典键中的次数,当计数值大于1时,说明存在其他更长的键包含当前键,此时移除当前键即可。
对应VBA实现代码:

dict_keys = dict.key
For Each key In dict_keys
    Dim similar_words As Integer
    similar_words = 0
    For Each search_key In dict_keys
        If InStr(1, search_key, temp_key, 1) > 0 Then
            similar_words = similar_words + 1
            If similar_words > 1 Then
                dict.Remove (key)
            End If
        End If
    Next search_key
Next key

内容的提问来源于stack exchange,提问作者Possdawgers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 06:51:21