根据键值将Python字典转换为变量赋值

9 投票
3 回答
5181 浏览
提问于 2025-04-15 22:32

基本上,我想用一个

字典,比如 { "a":"bar", "b":"blah", "c":"abc", "d":"nada" }

来设置一些变量(在一个对象里),这些变量的名字和字典里的键是一样的。

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

所以最后的结果是 self.a = "bar",self.b = "blah",等等……(而键 "d" 会被忽略)

有什么想法吗?

3 个回答

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)
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)
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 方法正好具备你需要的功能。

撰写回答