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

Python如何根据字典键的斜杠数量拆分生成两个新字典

问题需求

现有字典:

dictA = {'/run/xy':'foo', '/run':'bar', '/run/ab/cd':'baz'}

需要按照键的斜杠数量拆分生成两个新字典:

  • dict1:仅保留键中包含1个斜杠的键值对,预期结果为{'/run':'bar'}
  • dict2:仅保留键中斜杠数量大于1的键值对,预期结果为{'/run/xy':'foo', '/run/ab/cd':'baz'}
原代码错误原因

原代码运行报错的核心问题有两个:

  1. 给dict.update()传参时写的{k,dictA[k]}是集合(元素用逗号分隔),不是字典(键值对用冒号分隔),集合没有键值映射关系,update方法无法解析,直接触发报错。
  2. 用len(k.split('/'))统计斜杠数会生成临时拆分列表,性能比直接调用字符串计数方法差。
正确实现

基础循环写法

逻辑直观,容易理解:

dictA = {'/run/xy':'foo', '/run':'bar', '/run/ab/cd':'baz'}
dict1 = {}
dict2 = {}

# 直接遍历键值对,统计每个键的斜杠数量
for key, value in dictA.items():
    slash_num = key.count('/')
    if slash_num == 1:
        dict1[key] = value
    elif slash_num > 1:
        dict2[key] = value

运行后结果完全符合预期:

dict1 = {'/run': 'bar'}
dict2 = {'/run/xy': 'foo', '/run/ab/cd': 'baz'}

字典推导式写法

代码更简洁,适合熟悉Python语法的场景:

dictA = {'/run/xy':'foo', '/run':'bar', '/run/ab/cd':'baz'}
dict1 = {k: v for k, v in dictA.items() if k.count('/') == 1}
dict2 = {k: v for k, v in dictA.items() if k.count('/') > 1}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:39:19