繁体   English   中英

如何检查python中的嵌套字典结构?

[英]How do you check for nested dictionary structure in python?

有没有办法确保字典不嵌套?

例如

关键和价值原子

{key1: value1, key2: value2}

价值不是原子的

{key1: {inner_key11: inner_value11}}

一种方法是检查类型,但是似乎字典的其他样式也有所不同,例如。 defaultdict

一种方法是检查类型,但是似乎字典的其他样式也有所不同,例如。 defaultdict

这就是为什么检查类型的惯用方法是使用isinstance 由于defaultdictdict的子类,因此isinstance(x, dict)对于defaultdict是true。

另外,您可能希望查看collections.abc (或3.2及更低版本中的collections ),并查看dict是否确实是您要检查的内容。 如果要捕获任何映射,甚至是blist.sorteddict类的blist.sorteddict ,都可以检查isinstance(x, collections.abc.Mapping) 或者,如果要完全捕获任何容器(包括序列,集合等),请使用collections.abc.Container 或者,您可能需要collections.abc.Iterable 您可以阅读说明并确定对于您的用例而言,哪一种表示“不是原子的”。

您可以检查该值是否从Mapping类继承。 Defaultdict是dict的一种,而OrderedDict直接从dict继承。

>>> from collections import Mapping

>>> d1 = {key1: value1, key2: value2}
>>> d2 = {key1: {inner_key11: inner_value11}}

>>> print isinstance(d1[key1], Mapping)
False
>>> print isinstance(d2[key1], Mapping)
True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM