将列表列表转换为对象

use*_*959 2 python class list

我目前有一个列表列表,其中每个列表都包含相同类型的信息,例如:

[['Planet Name', 16, 19, 27, 11], ['Planet Name 2', 12, 22, 11, 42], ....]
Run Code Online (Sandbox Code Playgroud)

我想用一个类把它变成一个具有相同信息的对象列表,其中索引0是self.name,索引1是self.distance,依此类推每个单独的列表.

我知道我需要使用某种for循环,但不知道如何去做这件事.

我真的很感激一些帮助,尝试学习Python和目前的课程!

the*_*eye 5

您可以像这样使用namedtuple,使用字段名称列表动态创建对象.*item在此代码中调用,解压缩参数列表

from collections import namedtuple
Planet = namedtuple("Planet", ["name", "distance", "a", "b", "c"])

data = [['Planet Name', 16, 19, 27, 11],['Planet Name 2', 12, 22, 11, 42]] 
for item in data:
    planet = Planet(*item)
    print planet.name, planet.distance, planet
Run Code Online (Sandbox Code Playgroud)

产量

Planet Name 16 Planet(name='Planet Name', distance=16, a=19, b=27, c=11)
Planet Name 2 12 Planet(name='Planet Name 2', distance=12, a=22, b=11, c=42)
Run Code Online (Sandbox Code Playgroud)

注意: namedtuple是.的子类tuple.因此,创建的所有对象namedtuple都是不可变的.这意味着,一旦创建了对象,就无法更改成员变量中的数据.