当前位置: 首页 > 编程笔记 >

Python多维/嵌套字典数据无限遍历的实现

闽高峯
2023-03-14
本文向大家介绍Python多维/嵌套字典数据无限遍历的实现,包括了Python多维/嵌套字典数据无限遍历的实现的使用技巧和注意事项,需要的朋友参考一下

最近拾回Django学习,实例练习中遇到了对多维字典类型数据的遍历操作问题,Google查询没有相关资料…毕竟是新手,到自己动手时发现并非想象中简单,颇有两次曲折才最终实现效果,将过程记录下来希望对大家有用。

实例数据(多重嵌套):

person = {"male":{"name":"Shawn"}, "female":{"name":"Betty","age":23},"children":{"name":{"first_name":"李", "last_name":{"old":"明明","now":"铭"}},"age":4}}

目的:

遍历person中所有嵌套字典类型数据,并以 key : value 的方式显示思路:首先分析数据是否符合字典特征打印该数据的key及对应value循环检查该数据的每一个子value是否符合字典特征,如果符合则迭代执行,不符合则返回循环继续执行至结束

具体代码:

def is_dict(dict_a): #此方法弃用,python已提供数据类型检测方法isinstance() 

 try: 

  dict_a.keys() 

 except Exception , data: 

  return False 

 return True 

 

def list_all_dict(dict_a): 

 if isinstance(dict_a,dict) : #使用isinstance检测数据类型 

  for x in range(len(dict_a)): 

   temp_key = dict_a.keys()[x] 

   temp_value = dict_a[temp_key] 

   print"%s : %s" %(temp_key,temp_value) 

   list_all_dict(temp_value) #自我调用实现无限遍历 

结果:

执行 list_all_dict(person),系统回应 :

male : {'name': 'Shawn'} 

name : Shawn 

children : {'age': 4, 'name': {'first_name': '\xc0\xee', 'last_name': {'now':'\xc3\xfa', 'old': '\xc3\xf7\xc3\xf7'}}} 

age : 4 

name : {'first_name': '\xc0\xee', 'last_name': {'now': '\xc3\xfa', 'old':'\xc3\xf7\xc3\xf7'}} 

first_name : 李 

last_name : {'now': '\xc3\xfa', 'old': '\xc3\xf7\xc3\xf7'} 

now : 铭 

old : 明明 

female : {'age': 23, 'name': 'Betty'} 

age : 23 

name : Betty 

以上这篇Python多维/嵌套字典数据无限遍历的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我试图遍历字典并打印出所有值不是嵌套字典的键值对。如果值是字典,我想进入它并打印出它的键值对…等等。有什么帮助吗? 这个怎么样?它仍然只打印一件事。 完整的测试用例 字典: 结果: 问题答案: 如Niklas所说,你需要递归,即你想定义一个函数来打印你的字典,如果值是一个dict,则想使用这个新字典来调用你的打印函数。 就像是 : 或从Python 3开始:

  • 问题内容: 我有一个嵌套的数据结构。我想使用模块读取其键和值。数据结构像下面这样。 我试图使用波纹管方式读取字典中的键,但出现错误。 码 错误 所以任何人都可以解释错误的原因以及如何遍历字典。 问题答案: 作为请求的输出,代码如下所示 代替您也可以使用,但是效率更高并且返回迭代器。 希望这可以帮助 :)

  • 问题内容: 我有一本字典,例如: 一切都始于“根”,它们有两种类型的数据:URL和文件夹,它们是字典。如果是文件夹,则必须具有键“ children”,该键的值是一个列表,我们可以在其中放置更多URL和文件夹。 现在,我想遍历此嵌套字典,以获取所有子文件夹中的URL,因此我编写了一个函数: 我可以这样使用它: 完美运作。但是它只是生成URL的字典,我不知道它在哪里。我也想走这条路。我该怎么做? 问

  • 3.7中的标准库可以递归地将数据类转换为判决(文档中的示例): 我正在寻找一种方法,当有嵌套时,可以将判决转换回数据类。像这样的东西只有在数据类的字段是简单类型而不是数据类时才有效。我熟悉jsonickle,但是它带有一个突出的安全警告。 编辑: 答案建议使用以下库: 英安岩 mashumaro(我用过一段时间,效果很好,但很快就遇到了棘手的角落案例) pydantic(非常好用,优秀的文档和较少

  • 问题内容: 我正在尝试找到一种更好的方法来实现这一点: 我正在学习函数式编程,所以我只是尝试浮现在脑海的随机示例:) 问题答案: 用途: 或更妙的是,使用: 演示: Python 3将函数移出了内置函数并移入。

  • 本文向大家介绍Python中的字典遍历备忘,包括了Python中的字典遍历备忘的使用技巧和注意事项,需要的朋友参考一下 备忘一下python中的字典如何遍历,没有什么太多技术含量.仅供作为初学者的我参考. interitems和iterms区别 参考 http://stackoverflow.com/questions/10458437/python-what-is-the-difference-

  • 问题内容: 我的代码是 似乎可以很好地打印索引= 0的字典键的值。 但是对于我的一生,我无法弄清楚如何将for循环放入for循环中,以循环访问未知数量的字典。 问题答案: 你可以只遍历的索引的你的: 或者您可以使用带有计数器的while循环: 您甚至可以直接遍历列表中的元素: 只需迭代字典的值,甚至可以不进行任何查找: 或将迭代包装在列表理解或生成器中,然后再将其解压缩: 可能性是无止境。选择哪种

  • 问题内容: 我是python的新手,所以请原谅任何愚蠢的错误,但是经过研究,我无法弄清楚。我正在根据日历中月份中的几天列表创建字典。我最初使用过,但发现此提交使我确信更改为我拥有的字典理解语句。然后,我给字典中的每个值分配另一个字典,该字典以星期几作为键,另一个字典作为值。这本词典是taskDic,以家务作为键,将人的名字作为值。 我的问题是,即使循环只是在第一天,循环中的最后一条语句仍每天分配同