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

