TypeError:参数类型为';int';在python中对于dict是不可移植的

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

在过去的两天里,我一直在苦苦挣扎,基本上,我想得到每个项目的会议名称,其中结束标记有“-1”值。如果contents['Close']:中的str(-1)出现在第
行,则该错误有时有效,有时产生错误

 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()
    同样会失败。也就是说,只要它支持映射协议,您就不必关心
    数据的类型。我已经尝试了你们两位在这里提到的所有解决方案,但输出仍然是一样的。