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

Python列表切片转字典时同键多值存储实现问题求解

问题根因

你的代码无法归集同键对应值的核心原因有两个:

  • defaultdict初始化参数错误:你需要为每个键存储列表形式的多组值,初始化时应该传入list作为默认值工厂,而非str
  • 赋值逻辑错误:直接使用dc[x] = y是全量覆盖键的对应值,无论使用哪种字典类型,这种写法都会替换掉同键下之前存储的所有旧内容,不会自动做归集。
正确实现代码
from collections import defaultdict

lst = [
    'Macbook Air - 13inch Model',
    'Iphone13 - Max Pro 65GB Model',
    'Iphone13 - Max 128GB Model',
    'Airpod2'
]
# 初始化时指定每个键的默认值为空列表
dc = defaultdict(list)

for item in lst:
    key, *val_parts = item.split('-')
    # 将当前条目分割出的值部分追加到对应键的列表中,而非直接覆盖
    dc[key].extend(val_parts)

print(dc)
运行输出
defaultdict(<class 'list'>, {'Macbook Air ': [' 13inch Model'], 'Iphone13 ': [' Max Pro 65GB Model', ' Max 128GB Model'], 'Airpod2': []})

补充说明:你之前给出的预期输出里Iphone13对应的第二个值漏写了开头的Max片段,属于手误。如果需要清理值前后多余的空格,可以把追加逻辑改成dc[key].extend(part.strip() for part in val_parts),处理后的值就不会带首尾多余空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:51:21