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

如何用Python从包含KeyVal对象的列表中提取键值对生成字典

符合Python风格的实现方法

根据你的场景,分两种常见情况处理:

情况1:已经持有header列表(包含KeyVal实例)

如果header是已经存在的列表,其中每个元素都是带有key和value属性的KeyVal对象,直接用字典推导式即可,这是最Pythonic的写法:

result = {kv.key: kv.value for kv in header}

情况2:仅持有字符串形式的内容

如果只有原始字符串,需要先解析字符串再生成字典,推荐两种安全高效的方式:

方式A:用ast模块解析(推荐,支持复杂场景)

ast模块能安全解析Python风格的字面量结构,避免正则的局限性:

import ast

# 原始字符串
s = "header=[KeyVal(key='abc',value='123'),KeyVal(key='xyz',value='456')]"
# 提取列表部分的内容
list_str = s.split('=', 1)[1]

# 定义与字符串中匹配的KeyVal类,让ast能正确实例化
class KeyVal:
    def __init__(self, key, value):
        self.key = key
        self.value = value

# 解析得到KeyVal实例的列表
header = ast.literal_eval(list_str)
# 生成目标字典
result = {kv.key: kv.value for kv in header}

方式B:用正则表达式提取(适合简单固定格式)

如果字符串格式固定且简单,正则表达式更轻量:

import re

s = "header=[KeyVal(key='abc',value='123'),KeyVal(key='xyz',value='456')]"
# 匹配每个KeyVal中的key和value值
key_value_pairs = re.findall(r"KeyVal\(key='(.*?)',value='(.*?)'\)", s)
# 直接将元组列表转为字典
result = dict(key_value_pairs)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:12:09