Python字典到变量赋值,基于键值到变量名

时间:2010-05-10 00:52:35

标签: python variables dictionary variable-assignment

基本上,我想要一个

{ "a":"bar", "b":"blah", "c":"abc", "d":"nada" }

这样的词典

并使用它来设置与字典中的键同名的变量(在Object中)。

class Foo(object)
{
    self.a = ""
    self.b = ""
    self.c = ""
}

所以最后self.a =“bar”,self.b =“blah”等......(并忽略键“d”)

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

class语句翻译为Python,

class Foo(object):
  def __init__(self):
    self.a = self.b = self.c = ''
  def fromdict(self, d):
    for k in d:
      if hasattr(self, k):
        setattr(self, k, d[k])

fromdict方法似乎具有您请求的功能。

答案 1 :(得分:3)

class Foo(object):
    a, b, c = "", "", ""

foo = Foo()

_dict = { "a":"bar", "b":"blah", "c":"abc", "d":"nada" }
for k,v in _dict.iteritems():
    if hasattr(foo, k):
        setattr(foo, k, v)

答案 2 :(得分:2)

另一种选择是使用参数解包:

class Foo(object):
     def __init__(self, a='', b='', c='', **kwargs)
         self.a = a
         self.b = b
         self.c = c

d = { "a":"bar", "b":"blah", "c":"abc", "d":"nada" }

f = Foo(**d)