gpt4 book ai didi

Python:检查变量是否是字典

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:56 26 4
gpt4 key购买 nike

我很好奇在检查 python 中的变量是否为字典时是否存在任何明显的问题?我意识到在 python 中进行类型检查不是很“pythonic”,但我不确定如何解决我的特定问题。

这是一个示例,我正在尝试根据 a.) 对象属性是否存在以及 b.) 如果我要覆盖的值是字典来设置对象的属性。如果它是一个字典,递归函数来设置那些子对象属性。

import six

class OtherObj(object):
def __init__(self, name):
self.name = name

class ExObj(object):
def __init__(self, name, description, other_obj):
self.name = name
self.description = description
self.other_obj = other_obj

def process_dict(obj, **kwargs):
for key, value in six.iteritems(kwargs):
if hasattr(obj, key):
if isinstance(value, dict):
process_dict(getattr(obj, key), **value)
else:
setattr(obj, key, value)

obj = ExObj("my name", "my desc", OtherObj("another name"))
process_dict(obj, **{ "name": "no this is my real name",
"description": "no this is my real desc",
"other_obj": { "name": "other object real name" } })

最佳答案

好吧,没有明显的问题,但如果你坚持:

  • 他们通常说请求宽恕比请求许可更好。也许只是试图通过 [] 访问它,捕获可能的异常更 Pythonic,但我个人不这么认为。
  • 但我要做的是使用抽象基类:

    import collections 
    isinstance(obj, collections.Mapping)

    通过这种方式,该函数可以支持其他可能的映射类型,而不仅仅是 dict

关于Python:检查变量是否是字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com