python将元组转为字典,python字典的值可以是变量吗

  python将元组转为字典,python字典的值可以是变量吗

  当我们用Python写一个类的时候,如果有些成员变量需要用字典来命名和赋值,该怎么办?本文主要介绍如何使用Python将字典转换成成员变量的一些信息。有需要的可以参考一下。

  00-1010技术背景:使用__dict__定义成员变量的嵌套字典来引用成员变量的摘要。

  

目录

  当我们用Python写一个类的时候,如果有些成员变量需要用字典来命名和赋值,该怎么办?这种情况在从文件(如json、npz等)中读取字典变量时最为常见。)放入内存,然后将它们赋给类的成员变量或生成的实例变量。

  

技术背景

  python中__dict__的方法。直接支持update()进行操作,避免使用locals()、vars()和eval()函数。我们可以直接看这样一个案例:

  In [1]: dict_a={a:1, b:2}

  In [2]: dict_b={c:3}

  [3]:中的D类(对象):

  . def __init__(self):

  . self.d=4

  .自我。__词典_ _。更新(字典_a)

  .自我。__词典_ _。更新(字典_b)

  .

  In [4]: new_D=D()

  In [5]: new_D.__dict__

  Out[5]: {d: 4, a: 1, b: 2, c: 3}

  [6]:中新_D.a

  Out[6]: 1

  [7]:新特区

  [7]: 3

  在这种情况下,我们在类外定义了两个字典dict_a和dict_b,字典的键值都是字符串的格式。而且我们知道,在python中不使用eval,字符串格式是不能直接作为变量名的。但是,字典通过__dict__的方法导入后。update(),字典中的所有键值都将被自动识别并作为成员变量赋给当前类。但是,这种方法有一个缺点,就是只能通过单级字典来赋值。如果遇到有层次结构的字典,它不会自动区分层次结构进行赋值,比如下面的代码:

  in[15]: dict _ a={ f : { h :8 }, g:7}

  在[16]:中new_D=D()

  在[17]:新_ D. __字典_ _

  Out[17]: {d: 4, f: {h: 8}, g: 7, c: 3}

  

使用__dict__定义成员变量

  根据上一章末尾提到的这个特殊场景,我们需要递归计算字典中的元素。如果我们遇到一个嵌套的dictionary元素,我们将递归地将该元素添加到下一级的成员变量中。具体代码如下:

  dict_a={f:{h:8}, g:7}

  dict_b={c:3}

  D:级

  def __init__(self,*args):

  对于args:中的arg

  对于k,v在arg.items():中

  if isinstance(v,dict):

  自我。__dict__[k]=D(v)

  else:

  自我。__dict__[k]=v

  new_D=D(字典_a,字典_b)

  print (new_D.__dict__)

  打印(新_D.f.h)

  的最终输出如下:

  {f: __main__。位于0x7fd2f32a4340的d对象

  , g: 7, c: 3}

  八

  可以看到,我们最终通过new_D.f.h方法成功读取了原始嵌套字典中的值。虽然这样的写法看起来不太优雅,但似乎也没有更好的解决办法。而且通过这个小问题的练习,还发现了另一个稍微有趣的问题:在python中更新字典类型时,如果关键字符串有一个点,比如parDict[group1.b]=3,那么只能以这样的字符串形式更新。如果使用parDict.update(group1.b=4 ),将会出现错误,因为点在python中。

  标识符的有效字符与Python 2.x:中的相同,包括大小写字母A到Z、下划线_以及除第一个字符之外的数字0到9。

  

嵌套字典转成员变量

  本文要解决的问题场景如下:如果一个给定的字典,比如从json文件或者npz文件加载的数据,是字典的数据结构,如果我们要将这个字典赋给一个类,并使字典的键和值作为该类的成员变量名和成员变量值,那么如何实现呢?对于扁平化的字典(没有嵌套字典),我们可以直接使用update将字典中的所有键和值转换为当前类的成员变量。比较麻烦的是有嵌套字典的层次字典。这时,我们只能使用循环,递归地给类的成员变量赋值。

  

总结概要

  https://blog . csdn . net/csrh 131/article/details/100138474https://stack overflow.com/questions/67662925/Dictionary-keys-with-a-dot-do-work-with-update此处。本文介绍了如何使用Python将字典转换成成员变量。有关将Python字典转换为成员变量的更多信息,请搜索流行的IT软件开发工作室以前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: