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

如何拆分字典值为空格分隔元素?解决AttributeError报错

字典值拆分问题解决方法

问题背景

现有字典,执行以下代码打印前2个键值对:

[print(v) for i, v in enumerate(dict_data.items()) if i < 2]

输出:

(1, ['qd inc', 'san diego', '11578 sorrento valley road'])
(2, ['argon jg hannoosh', 'phil mag', 'initiation crazes polystyrene'])

目标是将每个键对应的列表内的字符串按空格拆分,合并为一个新列表,期望输出:

(1, ['qd', 'inc', 'san', 'diego', '11578', 'sorrento', 'valley', 'road'])
(2, ['argon', 'jg', 'hannoosh', 'phil', 'mag', 'initiation', 'crazes', 'polystyrene'])

但执行以下代码时触发错误:AttributeError: 'list' object has no attribute 'split'

dict_data = {key: [int(val) for val in value.split()] for key, value in dict_data.items()}

错误原因

原字典中每个键对应的value是列表类型,而非字符串,因此无法直接调用字符串的split()方法。需要遍历列表内的每个字符串元素,逐个拆分后再合并结果。

可行解决方法

方法1:仅拆分字符串并合并

使用嵌套列表推导式,遍历原列表中的每个字符串,拆分后收集所有单词:

dict_data = {
    key: [word for item in value for word in item.split()]
    for key, value in dict_data.items()
}

方法2:拆分同时转换数字类型

如果需要将类似'11578'的数字字符串转换为整数类型,可添加类型转换逻辑:

def convert_to_int(word):
    try:
        return int(word)
    except ValueError:
        return word

dict_data = {
    key: [convert_to_int(word) for item in value for word in item.split()]
    for key, value in dict_data.items()
}

此方法会将可转换为整数的字符串转为int类型,其他内容保持字符串格式。

验证结果

执行以下代码打印处理后的前2个键值对:

for i, v in enumerate(dict_data.items()):
    if i < 2:
        print(v)

即可得到预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:48:15