如何知道变量是否在列表中对象的属性中?

时间:2016-06-17 07:50:01

标签: python list object attributes

要检查变量是否在列表中,我知道可以使用if variable in list。在我的实例中,我有一个对象列表,所有对象都具有属性“id”,我想检查列表中的对象是否具有特定ID,但我不确定如何进行此操作。

我已经尝试在谷歌以及此处查找此内容,但我找不到任何相关结果。这可能是因为我真的不知道如何正确地表达我的问题,所以如果我的问题没有意义,请告诉我,我会尝试更好地解释它。

3 个答案:

答案 0 :(得分:1)

您可以使用列表推导来获取所有ID的列表,并检查列出的id是否为in

if my_id in [o.id for o in my_list]:
    do_something()

或者你可以像这样使用any方法:

if any(my_id == o.id for o in my_list):
    do_something()

答案 1 :(得分:1)

因此,如果您只想检查列表中是否有任何具有特定属性的项目,您可以执行此操作:

if any(hasattr(i, str(variable)) for i in your_list):
  do_something()

如果您想获取包含此属性的所有项目,您可以执行以下操作:

contain_attribute = [i for i in x if hasattr(i, variable)]

对于您的问题,只是为了确保您的所有商品都具有属性id并避免AttributeError

if variable in [i.id for i in x if hasattr(i, "id")]:
    do_something

答案 2 :(得分:0)

这是一种搜索相同对象列表中特定对象的方法。我知道你正在使用python,我不知道python但我在其他代码中写了它。希望能帮助到你。

  

在我的实例中,我有一个对象列表,所有对象都有   属性“id”

List和Object.getId()

我想检查列表中的对象是否具有特定的ID,但我不确定如何进行此操作。

int mySpecificID = 3;
List<MyObject> list;      
for(int i = 0; i < list.count(); i++)
{
  if(list[i].Id==mySpecificId)
  {
   //We found it again
   MyObject objectFound = list[i];
  }
}

或者

(cbControls.Count + tbControls.Count)