从过去的2天开始,我一直在苦苦挣扎,基本上我想为Close标签具有“ -1”值的每个项目获取MeetingName。错误发生在行if str(-1) in contents['Close']:
上,有时可以正常工作,有时会给出错误
def meetingHandler(message):
# path = str(message['path']).replace('/', '')
data = message['data']
#ended_meetings = []
if data is not None:
for name, contents in data.items():
if str(-1) in contents['Close']:
#ended_meetings.append(str(name))
p1 = str(contents['Port_1'])
p2 = str(contents['Port_2'])
VoIP.close_ports(str(p1), str(p2))
results = Constants.db.child('OnGoingMeetings').child(str(name)).remove()
else:
pass
这是字典中的输入数据。
<class 'dict'>: {'path': '/', 'data': {'Meeting_15911478': {'Close': -1, 'Port_1': '1245', 'Port_2': '2810'}, 'Meeting_15919478': {'Close': 0, 'Port_1': '1925', 'Port_2': '2310'}}, 'event': 'put'}
我尝试了tryexcept子句,但是仍然存在相同的问题。 有人可以帮忙吗?
答案 0 :(得分:2)
据我所知,contents['Close']
在您的情况下为(标量)-1(分别为0)。没有设置,没有列表,没有包含该值作为成员的元组,因此很明显in
操作将失败。
您可能想说contents['Close'] == -1
,因为它也不是字符串,将-1
转换为str
也没有意义。
如果我获取您的输入数据和功能,请通过以下方式进行修改
contents['Close'] == -1
而非str(-1) in contents['Close']
)print()
调用替换VOIP和数据库指令我有
def meetingHandler(message):
# path = str(message['path']).replace('/', '')
data = message['data']
#ended_meetings = []
if data is not None:
for name, contents in data.items():
#if str(-1) in contents['Close']:
if contents['Close'] == -1:
#ended_meetings.append(str(name))
p1 = str(contents['Port_1'])
p2 = str(contents['Port_2'])
print('VoIP.close_ports(' + str(p1) + ", " + str(p2) + ")")
print("remove", name)
else:
pass
message = {'path': '/', 'data': {'Meeting_15911478': {'Close': -1, 'Port_1': '1245', 'Port_2': '2810'}, 'Meeting_15919478': {'Close': 0, 'Port_1': '1925', 'Port_2': '2310'}}, 'event': 'put'}
meetingHandler(message)
这给了我输出
VoIP.close_ports(1245, 2810)
remove Meeting_15911478