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

如何在Python中解析字典,实现点语法访问其元素?

问题:如何让字典支持点语法访问元素?

我有如下文件:
file.py

data = {
    "SerialNumber": 1234,
    "ActualCount": "TY"
}

在app.py中我可以导入该文件,并通过如下方式调用字典:
app.py

import file as file

print(file.data['SerialNumber'])

请问是否存在某种解析器,可解析此类字典对象,让我能通过如下方式获取其元素:

print(file.data.SerialNumber)
print(file.data.ActualCount)

解决方案

方法1:使用types.SimpleNamespace(推荐,内置模块)

Python内置的types.SimpleNamespace可以直接将字典转换为支持点语法的对象,用法简洁:

修改app.py:

import file as file
from types import SimpleNamespace

# 将字典转为SimpleNamespace实例
data_obj = SimpleNamespace(**file.data)

print(data_obj.SerialNumber)  # 输出:1234
print(data_obj.ActualCount)   # 输出:TY

如果希望直接在file.py中定义可点访问的对象,也可以直接修改该文件:

from types import SimpleNamespace

data = SimpleNamespace(
    SerialNumber=1234,
    ActualCount="TY"
)

之后在app.py中导入后可直接使用点语法:

import file as file

print(file.data.SerialNumber)

方法2:自定义转换类(支持嵌套字典)

如果需要处理嵌套字典的场景,可自定义一个简单的转换类:

class DictToObj:
    def __init__(self, data):
        for key, value in data.items():
            # 递归处理嵌套字典
            if isinstance(value, dict):
                setattr(self, key, DictToObj(value))
            else:
                setattr(self, key, value)

使用示例:

import file as file

data_obj = DictToObj(file.data)
print(data_obj.SerialNumber)

方法3:使用dataclasses(适合结构化固定数据)

如果你的数据结构固定,使用dataclasses能获得类型提示、结构化验证等额外优势:

from dataclasses import dataclass

@dataclass
class Data:
    SerialNumber: int
    ActualCount: str

# 从字典初始化实例
data = Data(**{
    "SerialNumber": 1234,
    "ActualCount": "TY"
})

之后同样可通过data.SerialNumber访问对应值。


内容的提问来源于stack exchange,提问作者S Andrew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:15:54