Python 替换dict和x27列表中的值;对象为';id';
我需要向WSHandler连接列表(Tornado、Python)添加更多值。我正在将连接添加到一个列表中,如soPython 替换dict和x27列表中的值;对象为';id';,python,dictionary,tornado,Python,Dictionary,Tornado,我需要向WSHandler连接列表(Tornado、Python)添加更多值。我正在将连接添加到一个列表中,如soself.connections.append(self),但我需要添加更多信息,如self.connections.append({'id':self,'keyword':'})(稍后查找当前的selfid并替换关键字) 当我尝试基于self对象(如self.connections[self].filter='keyword')添加到列表时,我得到TypeError:列表索引必须是
self.connections.append(self)
,但我需要添加更多信息,如self.connections.append({'id':self,'keyword':'})
(稍后查找当前的self
id并替换关键字)
当我尝试基于self
对象(如self.connections[self].filter='keyword'
)添加到列表时,我得到TypeError:列表索引必须是整数,而不是WSHandler。
那我该怎么做呢
编辑:设法找到正确的对象,如下所示:
def on_message(self, message):
print message
for x in self.connections:
if x['id'] == self:
print 'found something'
x['keyword'] = message
print x['keyword']
print x
现在,如何从
连接中删除整个dict<代码>自我连接。删除(自我)
当然不再有效。对于这个用例,您不需要连接列表。将其存储在对象本身中可能更容易。只需使用self.filter='keyword'
否则:
for dict in self.connections:
if dict['id'] == self:
dict['keyword'] = 'updated'
或者,如果你喜欢简洁而不是清晰:
for dict in [dict for dict in self.connections if dict['id'] == self]:
dict['keyword'] == 'updated'
要删除,请使用:
for dict in self.connections:
if dict['id'] == self:
self.connections.remove(dict)
对于这个用例,您不需要连接列表。将其存储在对象本身中可能更容易。只需使用
self.filter='keyword'
否则:
for dict in self.connections:
if dict['id'] == self:
dict['keyword'] = 'updated'
或者,如果你喜欢简洁而不是清晰:
for dict in [dict for dict in self.connections if dict['id'] == self]:
dict['keyword'] == 'updated'
要删除,请使用:
for dict in self.connections:
if dict['id'] == self:
self.connections.remove(dict)
由于
self.connections
是一个列表,因此只能使用整数对其进行索引(如错误所示)。
self
这里是一个WSHandler对象,不是整数
我不是龙卷风专家,所以你应该试试汉斯说的
如果您仍然需要按照前面提到的方式进行操作,请尝试:
self.connections[self.connections.index(self)]
在列表中定位self对象。由于self.connections
是一个列表,因此只能使用整数对其进行索引(如错误所述)。
self
这里是一个WSHandler对象,不是整数
我不是龙卷风专家,所以你应该试试汉斯说的
如果您仍然需要按照上述方式进行操作,请尝试:
self.connections[self.connections.index(self)]
在列表中找到self对象。谢谢。但它必须匹配连接列表中的正确ID。我如何确保它是正确的?啊,是的,我认为你是对的-只需将其存储在对象本身中就更容易了。基本上,如果你要查找的对象是self
,那么就不需要根据其id
从连接中检索它。在您的代码片段中,您没有显示存储匹配id的位置。它在哪里?实际上,没有“id”,它只是我对self对象的简称。见编辑,谢谢。但它必须匹配连接列表中的正确ID。我如何确保它是正确的?啊,是的,我认为你是对的-只需将其存储在对象本身中就更容易了。基本上,如果你要查找的对象是self
,那么就不需要根据其id
从连接中检索它。在您的代码片段中,您没有显示存储匹配id的位置。它在哪里?实际上,没有“id”,它只是我对self对象的简称。请参见编辑。