Vadim Asked:2022-05-12 07:23:57 +0800 CST2022-05-12 07:23:57 +0800 CST 2022-05-12 07:23:57 +0800 CST Python,对象数组 772 假设我们有一个对象数组: array = [{'x': x, 'y': y, 'unique': True}, {'x': x, 'y': y}, {'x': x, 'y': y, 'unique': True}] 我正在迭代,但是如何检查对象是否具有唯一属性 python 2 个回答 Voted Best Answer Андрей 2022-05-12T07:54:22+08:002022-05-12T07:54:22+08:00 array = [{'x': 'x', 'y': 'y', 'unique': True}, {'x': 'x', 'y': 'y'}, {'x': 'x', 'y': 'y', 'unique': True}] for dict in array: if 'unique' in dict: print(True) else: print(False) #True #False #True 取自这里。 SergFSM 2022-05-13T05:37:57+08:002022-05-13T05:37:57+08:00 如果您array从字面上考虑,正如您所说的,“对象数组”,那么这是一个类对象列表,dict它的键不是属性: d = {'x': x, 'y': y, 'unique': True} getattr(d, 'unique') ''' AttributeError: 'dict' object has no attribute 'unique' 如果您希望键只是属性,那么您可以从字典中创建类对象。然后它们将具有相应的属性,并且可以根据需要检查是否存在所需的属性。例如,像这样: array = [{'x': x, 'y': y, 'unique': True}, {'x': x, 'y': y}, {'x': x, 'y': y, 'unique': True}] class Unique: def __init__(self, d): self.__dict__ = d array = [Unique(d) for d in array] for u in array: print(hasattr(u, 'unique')) ''' True False True 但是,如果您希望数组对象保留字典并且仍然具有属性,那么这也是可能的。我们通过从类继承来创建一个类dict。或多或少是这样的: array = [{'x': x, 'y': y, 'unique': True}, {'x': x, 'y': y}, {'x': x, 'y': y, 'unique': True}] class UniqueDict(dict): def __init__(self, d): super().__init__(d) self.__dict__ = self d_array = [UniqueDict(d) for d in array] d_array[0] ''' {'x': 'X', 'y': 'Y', 'unique': True} ''' d_array[0].unique ''' True 如果您只需要检查字典中是否存在某个键,那么我们已经告诉您如何去做。
取自这里。
如果您
array
从字面上考虑,正如您所说的,“对象数组”,那么这是一个类对象列表,dict
它的键不是属性:如果您希望键只是属性,那么您可以从字典中创建类对象。然后它们将具有相应的属性,并且可以根据需要检查是否存在所需的属性。例如,像这样:
但是,如果您希望数组对象保留字典并且仍然具有属性,那么这也是可能的。我们通过从类继承来创建一个类
dict
。或多或少是这样的:如果您只需要检查字典中是否存在某个键,那么我们已经告诉您如何去做。