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

Python将JSON标签数组合并为同键多值字典报错如何解决

报错原因与解决方案

问题定位

  • 前置逻辑错误:你调整后的代码第一步就执行了product['tags'] = dict(s.split('--') for s in t_filtered),该步骤会直接覆盖同键的多个值,后续处理无法获取到被覆盖的原始多值,属于无效逻辑。
  • 语法报错原因:Python直接遍历字典时默认仅返回字典的键(单个字符串),你尝试将单个字符串赋值给k, v两个变量,自然抛出ValueError: too many values to unpack (expected 2)错误,正确遍历字典键值对需要调用.items()方法。

正确实现

无需提前转为字典,直接遍历过滤后的标签列表处理即可,以下两种方案均可实现需求:

方案1:使用setdefault实现(无需导入依赖)

t = product['tags']
t_filtered = [k for k in t if '--' in k]
result = {}
for item in t_filtered:
    # 加maxsplit=1避免值本身包含--时拆分错误
    key, value = item.split('--', 1)
    # 若需要格式化sugar的精度为1位小数,可打开下方注释
    # if key == 'sugar':
    #     value = f"{float(value):.1f}"
    result.setdefault(key, []).append(value)
product['tags'] = result

方案2:使用collections.defaultdict实现(代码更简洁)

from collections import defaultdict

t = product['tags']
t_filtered = [k for k in t if '--' in k]
result = defaultdict(list)
for item in t_filtered:
    key, value = item.split('--', 1)
    result[key].append(value)
# 转为普通字典符合输出要求
product['tags'] = dict(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:54:03