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

Python 访问用户定义对象中的字典值并将其添加到列表中,python,python-3.x,Python,Python 3.x,我想知道是否有一种方法可以访问用户定义对象中的特定字典值 例如 当做 test1.c 我得到: {'key1':0,'key2':1} 但是我怎样才能得到字典中的值,比如说,“key1”(只有“key1”) 此外,我正在尝试将对象的内容添加到列表中(作为特定的列表元素)。这有可能吗 我正在尝试做一些类似的事情: test1_list=[] test1_list=[].append(Test("text", 0, {"key1":0, "key2":1})) 当我这样做时: print(tes

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

例如

当做

test1.c
我得到:

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

但是我怎样才能得到字典中的值,比如说,“key1”(只有“key1”)

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

我正在尝试做一些类似的事情:

test1_list=[]
test1_list=[].append(Test("text", 0, {"key1":0, "key2":1}))
当我这样做时:

print(test1_list)
我只得到:

没有

而不是:

[“文本”,0,{“键1”:0,“键2”:1}]


仔细研究一下是有意义的阅读本文档后,您应该能够自己解决问题。

至少它会帮助你更好地理解下面的解决方案


简而言之,以下是如何获取键的值:

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})]
但是我怎样才能得到字典中的值,比如说,“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

test1.c['key1']
。你应该复习Python教程之类的介绍材料。因此,在第二个问题中,你想添加
test1
对象还是
test1
字段的内容?我想将“test1”字段的内容添加到列表中。哦。。。非常感谢你。。。我一定会浏览你推荐的网站。我的荣幸!我祝愿你在编码冒险中一切顺利!还有一件事。。。。当我执行“>>>test1_list”时,我得到:[],但不是列表形式的内容elements@KideW这是正常的,因为python不知道如何“显示”列表中的对象。您可以为类定义
\uuuu repr\uuu
方法来告诉python如何显示对象。看见
In [3]: test1.key1
Out [3]: 0

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