我想知道是否有一种方法可以访问用户定义的对象中的特定词典值?
例如
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}]
答案 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