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
相关产品推荐
相关产品推荐

