Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 类型错误:不可损坏的类型:';切片';在api中_Python_Docker_Api_Restapi_Tinydb - Fatal编程技术网

Python 类型错误:不可损坏的类型:';切片';在api中

Python 类型错误:不可损坏的类型:';切片';在api中,python,docker,api,restapi,tinydb,Python,Docker,Api,Restapi,Tinydb,我尝试了上千种不同的方法,但代码不起作用,我只想更新我的帐户列表 如果用户: x=用户[0][“帐户”] 对于x中的项目: 打印(项目) 如果项目['account\u id']==str(account\u id): 项目[ “url”:url, “用户名”:用户名, “密码”:密码 ] user_accounts.update({'accounts':user[0]['accounts']},selector.user_id==str(user_id)) 问题似乎在这里: 项目[ “url

我尝试了上千种不同的方法,但代码不起作用,我只想更新我的帐户列表

如果用户:
x=用户[0][“帐户”]
对于x中的项目:
打印(项目)
如果项目['account\u id']==str(account\u id):
项目[
“url”:url,
“用户名”:用户名,
“密码”:密码
]
user_accounts.update({'accounts':user[0]['accounts']},selector.user_id==str(user_id))

问题似乎在这里:


项目[
“url”:url,
“用户名”:用户名,
“密码”:密码
]
我不知道您试图用该代码实现什么,但如果我编写以下代码:

foo={1:'1','2':2}
foo[1:“foo”]

然后我得到了一个类似于您的错误:
TypeError:unhabable type:'slice'
。看起来Python将括号中带有冒号的内容解释为切片表示法,就像列表或数组中使用的切片表示法一样。切片不是有效的字典键,因为它不可散列,因此Python会相应地抱怨。

问题的出现是因为您在方括号内使用了列

Python将其解释为“切片”,即选择列表的一部分:

array = ["a", "b", "c"]
array2 = array[1:2] # select elements between position 1 (included) and 2 (excluded)
print (array2)  # ["b"] is printed
因此,您不能像正在尝试的那样在dict中分配多个值

相反,您应该使用该方法,就像您在下一行中为
user\u帐户
dict所做的那样:

    if user:
        x = user[0]["accounts"]
        for item in x:
            print(item)
            if item['account_id'] == str(account_id):                    
                item.update({
                    'url':url,
                    'username':username,
                    'password':password
                })
                user_accounts.update({'accounts ':user[0]['accounts'] }, selector.user_id == str(user_id))
你应该发布一个。什么“不起作用”?你有什么错误?它与预期结果有什么不同?