[英]How do I create a function that will return a value in a dictionary for each row within a data sheet using Python?
[英]How do I return dictionary value as variable within the class
我有以下类,它返回给定kwargs
作为输入的字典。
class Emp_Constant:
def __init__(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
但是,在某些情况下,我想将字典作为此类的输入传递,并将键值作为变量进行访问。
例如,如果我的字典是{'name': 'Tome', 'age':'26'}
,那么我想访问'Tom',如下所示:
set = {'name': 'Tom', 'age':'26'}
a = Emp_Constant(set)
first_emp = a.NAME (where NAME is a variable that holds value of key 'name')
这有可能实现吗?
只需使用dict拆包
a = Emp_Constant(**set)
当然,使用“double-splat”运算符将字典解压缩为关键字参数,然后使用getattr
:
In [30]: class Emp_Constant:
...: def __init__(self, **kwargs):
...: for key, value in kwargs.items():
...: setattr(self, key, value)
...:
In [31]: data = {'name': 'Tom', 'age':'26'}
...: a = Emp_Constant(**data)
...:
...: NAME = 'name'
...:
...:
In [32]: getattr(a, NAME)
Out[32]: 'Tom'
使用obj_dict = Emp_Constant(**set)
from easydict import EasyDict as edict
set = {'name': 'Tom', 'age':'26'}
obj_dict = edict(set)
print(obj_dict.name)
[OUT]:
'Tom'
你的意思是你希望班级以任何方式取名和年龄?
怎么样:
class Emp_Constant:
def __init__(self, useADict=None, **kwargs):
if useADict:
self.name = useADict.name
self.age = useADict.age
else:
for key, value in kwargs.items():
setattr(self, key, value)
问题是您将字典作为第一个参数传递,而不是使用** - 在您的示例中,您应该已经完成:
set = {'name': 'x', 'age': 10}
a = Emp_Constant(**set)
然后你可以访问a.name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.