Python 如何根据参数值选择正确的列表?

Python 如何根据参数值选择正确的列表?,python,Python,我有一个包含多个列表的类,即: class my_class(object): def __init__(self, list_A, list_B, ..., list_Z): self.list_A = list_A (...) self.list_Z = list_Z 然后我需要一个方法,它将一个元素附加到一个列表中。我现在做的是类似于C中的开关盒: 这是非常无效的,如果我想改变一些东西,需要做很多工作。 有没有办法把它缩短?我想象一

我有一个包含多个列表的类,即:

class my_class(object):
    def __init__(self, list_A, list_B, ..., list_Z):
        self.list_A = list_A
        (...)
        self.list_Z = list_Z
然后我需要一个方法,它将一个元素附加到一个列表中。我现在做的是类似于C中的开关盒:

这是非常无效的,如果我想改变一些东西,需要做很多工作。 有没有办法把它缩短?我想象一些类似于string.format()的东西:


使用
getattr
访问属性

def append(self, list_name, item):
    getattr(self, 'list_%s' % list_name).append(item)

不要围绕变量名构建程序逻辑。请指定一个项目必须填写的标准,以便将其排序到特定列表。 如果是简单的字母顺序,只需在代码中表达即可

例如:

class my_class():
    def __init__(self):
        self.list_A = []
        self.list_B = []
        self.dict = { "A":self.list_A, "B":self.list_B }

    def add_to_list(self, key):
        # Logic in here
        self.dict.get(key[:1]).append(key)

if __name__ == "__main__":
    c = my_class()
    c.add_to_list("Apple")
    c.add_to_list("Bus")
    c.add_to_list("Airplane")
    print(c.dict["A"])
    print(c.dict["B"])

你可以借助字典这样做

class base:
    def __init__(self, * pack):
        self.dictitems={}
        for i, j in zip('abcdefg',pack):
            self.dictitems[i]=j


    def add(self,list_name,item,key):

        self.dictitems[key].append(item)

    def printdict(self):
        print(self.dictitems)

a,b,c =[ [] for i in range(3)]
z=base(a,b,c)
z.add(b, 5 ,key ='b')
z.add(b, 7 ,key ='b')
z.add(c, 7 ,key ='c')
z.printdict()

为什么你有26个
列表a
列表B
等属性,而不是26个列表的列表?@user2357112我需要按名称区分它们,比如citizens\u Chicago,citizens\u NY,华盛顿市民等。用数字编制索引会很混乱。@RedFidd难道你就不能使用字典,在字典中用关键字名称引用它们吗?@Theralprashant你的意思是list_dict={'list_a':[],'list_B':[],…,'list_Z':[]?这是有道理的:-)我需要检查一下,这是否适用于我使用的其他方法。
class my_class():
    def __init__(self):
        self.list_A = []
        self.list_B = []
        self.dict = { "A":self.list_A, "B":self.list_B }

    def add_to_list(self, key):
        # Logic in here
        self.dict.get(key[:1]).append(key)

if __name__ == "__main__":
    c = my_class()
    c.add_to_list("Apple")
    c.add_to_list("Bus")
    c.add_to_list("Airplane")
    print(c.dict["A"])
    print(c.dict["B"])
class base:
    def __init__(self, * pack):
        self.dictitems={}
        for i, j in zip('abcdefg',pack):
            self.dictitems[i]=j


    def add(self,list_name,item,key):

        self.dictitems[key].append(item)

    def printdict(self):
        print(self.dictitems)

a,b,c =[ [] for i in range(3)]
z=base(a,b,c)
z.add(b, 5 ,key ='b')
z.add(b, 7 ,key ='b')
z.add(c, 7 ,key ='c')
z.printdict()