如何拆分字典值为空格分隔元素?解决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
相关产品推荐
相关产品推荐

