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

2024-05-11 03:43:20 发布

您现在位置:Python中文网/ 问答频道 /正文

要检查变量是否在列表中,我知道可以使用if variable in list。在我的例子中,我有一个对象列表,所有的对象都有“id”属性,我想检查列表中的一个对象是否有一个特定的id,但是我不确定如何去做。你知道吗

我已经试着在google和这里查过了,但是找不到任何相关的结果。这可能是因为我真的不知道如何正确表达我的问题,所以如果我的问题没有意义,让我知道,我会努力解释它更好。你知道吗


Tags: 对象inid列表if属性googlevariable
3条回答

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

In my instance, I have a list of objects, all of which have the attribute "id"

列表和对象.getId()

我想检查列表中的一个对象是否有一个特定的ID,但我不确定该怎么做。你知道吗

int mySpecificID = 3;
List<MyObject> list;
for(MyObject myobject : list)
{
   if(myobject.getId()==mySpecificID)
   {
     //We found it
     MyObject objectFound = myobject;
   }
}

或者

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];
  }
}

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

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

您可以使用列表理解获得所有ID的列表,并检查您的id是否in该列表: 你知道吗

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

或者可以使用^{}方法,如下所示:

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

相关问题 更多 >