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

Python:如何从嵌套列表按键值对提取元素并处理缺失属性

书籍属性提取与DataFrame构建方案

需求说明

给定初始字符串列表:

book_attrs = ['ISBN: 9789353765170', 'Pages: 64', 'Size: 294 x 219', 'Language: English', 'Book Binding: Paperback', 'Weight: 350 gm.']

通过split(":")得到的嵌套列表无法直接满足需求,需将各属性值存入对应列表以创建DataFrame,且部分列表可能包含Format属性,需为不存在的属性填充Not available。

实现步骤

1. 将原始列表转换为键值对字典

把每个字符串按冒号分割,去除值的前后空格,生成属性字典便于后续取值:

# 转换为字典
attr_dict = {}
for item in book_attrs:
    key, value = item.split(":", 1)  # 用split(":",1)避免属性名含冒号的异常情况
    attr_dict[key.strip()] = value.strip()

2. 定义目标属性集合

明确所有需要提取的属性(包括可能存在的Format):

target_attrs = ['ISBN', 'Pages', 'Size', 'Language', 'Book Binding', 'Weight', 'Format']

3. 生成填充后的属性数据

遍历目标属性,从字典中取值,不存在的属性用Not available填充:

# 生成单条数据的填充后字典
filled_attrs = {attr: attr_dict.get(attr, 'Not available') for attr in target_attrs}

4. 创建DataFrame

使用pandas将填充后的属性转换为DataFrame:

import pandas as pd

df = pd.DataFrame([filled_attrs])
print(df)

运行后输出的DataFrame会包含所有目标属性,缺失的Format列会显示Not available。

扩展:批量处理多条书籍数据

如果有多个书籍的属性列表,可通过循环批量处理:

# 示例多条书籍数据
multiple_books = [
    ['ISBN: 9789353765170', 'Pages: 64', 'Size: 294 x 219', 'Language: English', 'Book Binding: Paperback', 'Weight: 350 gm.'],
    ['ISBN: 9781234567890', 'Pages: 128', 'Format: Hardcover', 'Language: English', 'Weight: 500 gm.']
]

# 批量处理逻辑
data_list = []
for book in multiple_books:
    attr_dict = {}
    for item in book:
        key, value = item.split(":", 1)
        attr_dict[key.strip()] = value.strip()
    filled_attrs = {attr: attr_dict.get(attr, 'Not available') for attr in target_attrs}
    data_list.append(filled_attrs)

# 生成批量DataFrame
df = pd.DataFrame(data_list)
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:45:51