TypeError:参数类型为';int';在python中对于dict是不可移植的
在过去的两天里,我一直在苦苦挣扎,基本上,我想得到每个项目的会议名称,其中结束标记有“-1”值。如果contents['Close']:中的str(-1)出现在第TypeError:参数类型为';int';在python中对于dict是不可移植的,python,Python,在过去的两天里,我一直在苦苦挣扎,基本上,我想得到每个项目的会议名称,其中结束标记有“-1”值。如果contents['Close']:中的str(-1)出现在第行,则该错误有时有效,有时产生错误 def meetingHandler(message): # path = str(message['path']).replace('/', '') data = message['data'] #ended_meetings = [] if data is not
行,则该错误有时有效,有时产生错误
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
这是dicts中的输入数据
<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'}
:{'path':'/','data':{'Meeting_15911478':{'Close':-1,'Port_1':'1245','Port_2':'2810'},'Meeting_15919478':{'Close':0,'Port_1':'1925','Port_2':'2310'},'event':'put'}
我试过尝试使用EXPECT子句,但仍然存在相同的问题。
有人能帮忙吗?据我所知,内容['Close']
在您的情况下是一个(标量)-1(分别为0)。没有集合,没有列表,没有包含该值作为成员的元组,因此很明显,
中的操作将失败
您可能想说contents['Close']=-1
,因为它不是字符串,将-1
转换为str
也没有意义
如果我获取您的输入数据和函数,请通过
- 从上面添加我的建议(
contents['Close']==-1
而不是contents['Close']
中的str(-1))
用适当的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
但即使在内容['Close']=-1之后,它仍会出现相同的异常。contents['Close']=-1
也不会产生相同的异常,因为不涉及str
literal,也不涉及任何迭代。@SaifAli是否尝试重新启动调试过程?有时IDE不能很好地处理运行时所做的编辑。@SaifAli在那里说,'int'对象不可下标
。这与你描述的信息不同。@SaifAli我不知道你的问题在哪里。我已经获取了您的数据和代码,并按照建议对其进行了修改,而且效果良好。请参阅我编辑的答案。type(data)
永远不会是None
,因为文本None
只引用类型的值,而不是类型本身。如果数据不是None,您可能只需要,尽管您可能应该更具体一些,因为int
也不是None
,而是(3)。items()
同样会失败。也就是说,只要它支持映射协议,您就不必关心数据的类型。我已经尝试了你们两位在这里提到的所有解决方案,但输出仍然是一样的。