You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

列表切片与嵌套列表转字典:如何为无描述的列表项填充空描述值

解决方法:补全空描述并转换为字典列表

首先,我们来搞定列表里缺少描述的项,确保每个子元素都能有「名称+描述」的结构(没描述就补空字符串),再转成你要的字典格式。

步骤1:补全空描述

你现在用split('-', 1)分割元素,但遇到没有-的项时,结果只会是单元素列表。我们可以在分割后检查长度,不足2个元素就手动补上空字符串:

lst = [ 'Macbook Air - 13inch Model', 'Iphone13 - Max Pro 65GB Model', 'Airpod2' ]
new_lst = []
for item in lst:
    parts = item.split('-', 1)
    # 只有名称没有描述时,补上空字符串
    if len(parts) == 1:
        parts.append('')
    new_lst.append(parts)
print(new_lst)

这段代码的输出正好是你期望的:

[['Macbook Air ', ' 13inch Model'], ['Iphone13 ', ' Max Pro 65GB Model'], ['Airpod2', '']]

嫌麻烦的话,也可以用一行式的简洁写法:

new_lst = [item.split('-', 1) + ['']*(2 - len(item.split('-',1))) for item in lst]

步骤2:转换为字典列表

接下来把每个子列表转成单个键值对的字典,用列表推导式就能轻松搞定:

dict_list = [{parts[0]: parts[1]} for parts in new_lst]
print(dict_list)

输出就是你想要的最终格式:

[{'Macbook Air ': ' 13inch Model'}, {'Iphone13 ': ' Max Pro 65GB Model'}, {'Airpod2': ''}]

一步到位的完整代码

要是想少写几行,也可以把两个步骤合并成一个推导式:

lst = [ 'Macbook Air - 13inch Model', 'Iphone13 - Max Pro 65GB Model', 'Airpod2' ]
dict_list = [{parts[0]: parts[1] if len(parts)>1 else ''} for parts in (item.split('-',1) for item in lst)]
print(dict_list)

这样运行后直接就能得到目标结果啦。


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

火山引擎 最新活动