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

Python 2.7:将列表转为可通过点符号访问字段的对象

解决Python 2.7中通过点符号访问列表转换后字段的问题

在Python 2.7中,要实现通过点符号访问字段,你可以用以下几种方法替代字典:

方法1:使用collections.namedtuple(推荐)

namedtuple会创建一个轻量级的类,实例支持点符号访问属性,同时保持元组的特性,适合这种固定字段的场景。

from collections import namedtuple

def convert(persons_list):
    # 定义Person命名元组,指定字段名name和surname
    Person = namedtuple('Person', ['name', 'surname'])
    # 将每个子列表转换为Person实例
    return [Person(p[0], p[1]) for p in persons_list]

# 测试代码
x1 = ["John", "Doe"]
x2 = ["Jane", "Dan"]
x = [x1, x2]
y = convert(x)

print(y[1].name)  # 输出Jane
print(y[0].surname)  # 输出Doe

方法2:自定义简单类

如果不想用namedtuple,可以自己定义一个基础类来存储属性:

class Person(object):
    def __init__(self, name, surname):
        self.name = name
        self.surname = surname

def convert(persons_list):
    return [Person(p[0], p[1]) for p in persons_list]

# 测试代码同上,调用后同样支持点符号访问

方法3:动态创建对象(灵活但不推荐)

如果需要更灵活的方式,也可以直接创建空对象并动态设置属性:

def convert(persons_list):
    result = []
    for p in persons_list:
        obj = object()
        obj.name = p[0]
        obj.surname = p[1]
        result.append(obj)
    return result

# 测试代码同上

以上三种方法都能实现你需要的点符号访问需求,其中namedtuple是最简洁高效的方案,因为它是内置的轻量级结构,不需要额外的类定义开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:54:31