访问用户定义的对象中的字典值并将它们添加到列表中

时间:2019-01-05 11:41:18

标签: python python-3.x

我想知道是否有一种方法可以访问用户定义的对象中的特定词典值?

例如

class Test():
    def __init__(self, a, b, c):
        self.a=a
        self.b=b
        self.c=c

test1=Test("text", 0, {"key1":0, "key2":1})

这样做

test1.c

我得到:

  

{'key1':0,'key2':1}

但是我怎样才能得到“ key1”(仅“ key1”)的字典值?

此外,我正在尝试将对象的内容添加到列表(作为特定的列表元素)。有可能吗?

我正在尝试执行以下操作:

test1_list=[]
test1_list=[].append(Test("text", 0, {"key1":0, "key2":1}))

当我这样做时:

print(test1_list)

我只会得到:

  

没有

代替:

  

[“ text”,0,{“ key1”:0,“ key2”:1}]

2 个答案:

答案 0 :(得分:0)

仔细研究the python data structures很有意义。 阅读完本文档后,您应该能够自己解决问题。

至少它可以帮助您更好地了解以下解决方案。


简而言之,这是获取键值的方法:

test1.c['key1']
Out[5]: 0

以及如何追加到列表:

test1_list = []
test1_list.append(Test("text", 0, {"key1":0, "key2":1}))

或一口气:

test1_list = [Test("text", 0, {"key1":0, "key2":1})]

答案 1 :(得分:0)

  

但是我怎样才能得到“ key1”(仅“ key1”)的字典值?

这是使用exec的可怕答案(但有效且动态):

In [1]: class Test(object):
            def __init__(self, a, b, c):
            self.a = a
            self.b = b
            self.c = c
            try:
                self.__set_key_values()
            except ValueError:
                pass

            def __set_key_values(self):
                n = 1
                for k in self.c.keys():
                    exec(f'self.key{n} = {self.c[k]}')
                    n += 1

使用参数实例化您的类:

In [2]: test1 = Test("text", 0, {"key1":0, "key2":1})

尝试通过直接访问返回键值:

In [3]: test1.key1
Out [3]: 0

In [4]: test1.key2
Out [4]: 1