Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python检查str是否在对象列表中_Python_Python 3.x - Fatal编程技术网

python检查str是否在对象列表中

python检查str是否在对象列表中,python,python-3.x,Python,Python 3.x,我有课。简而言之,要进行初始化,必须在创建时为其提供一些值: class Silo: def __init__(self, id, name, netid, node): self.id = id self.name = name self.node = node self.netid = netid 我可能有多个思洛存储器,它们是通过sqllite数据库动态创建的。为了清晰起见,我放弃了数据库查询的代码,而是在我的示例中打印了下面的思洛存储器列表: gl

我有课。简而言之,要进行初始化,必须在创建时为其提供一些值:

class Silo:

  def __init__(self, id, name, netid, node):
    self.id = id
    self.name = name
    self.node = node
    self.netid = netid
我可能有多个思洛存储器,它们是通过sqllite数据库动态创建的。为了清晰起见,我放弃了数据库查询的代码,而是在我的示例中打印了下面的思洛存储器列表:

global siloList # siloList is a list of the Silos objects.
siloList = {} # Initialize
print(silos) # return: [(1, 'Silo 1', 1, 1), (2, 'Silo 2', 1, 4)]
for silo in silos: # loop through silos for each silo
  newSilo = Silo(silo[0], silo[1], silo[2], silo[3]) # Create the object from Silo class
  siloList[silo[0]] = newSilo # Create a list for each Silo object with the ID as the index
我想根据我输入的名称检索每个对象的ID,这样我就可以处理该类了

例如:

userInput = "Silo 2"
# Obtain "2" based on input "Silo 2" somehow
siloList[2].netid = 9 # Change the netid with siloList[id]
不过,我不知道如何从其中出现的名称中获取该对象的id

我发现了一个
silo=next((x代表x,如果obj['name']==userInput,则在enumerate(siloList)中为obj),则为None)
,但这给了我一个错误
TypeError:'int'对象是不可下标的,我不太明白如何使它满足我的需要(或者即使它能工作,或者什么更好)


谢谢。

您可以通过获取匹配的
思洛存储器的ID列表

matching_silo_ID_list = list(id_ for id_ in siloList if siloList[id_].name == userInput)  
如果您确定匹配列表中只有一个元素,则可以安全使用

matching_ID = matching_silo_ID_list[0]

注意。我猜你的
siloList={}
实际上是一本字典

siloList[matching_ID].netid = 9