Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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/9/apache-flex/4.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 向列表中添加multidict值_Python_List_Dictionary_Pyramid - Fatal编程技术网

Python 向列表中添加multidict值

Python 向列表中添加multidict值,python,list,dictionary,pyramid,Python,List,Dictionary,Pyramid,我从HTML表单发送数据,并使用python(金字塔框架)进行处理,这就是我的观点: @view_config(renderer='json', request_method='POST') def modify(self): d = self.request.params if d.get("perms"): if type(d.get("perms")) == str or type(d.get("perms")) == un

我从HTML表单发送数据,并使用python(金字塔框架)进行处理,这就是我的观点:

 @view_config(renderer='json', request_method='POST')
    def modify(self):
        d = self.request.params
        if d.get("perms"):
            if type(d.get("perms")) == str or type(d.get("perms")) == unicode:
                d["perms"] = [d["perms"]]
            for perm in d["perms"]:
                d[perm] = "on"
当我尝试执行
d[“perms”]=[d[“perms”]]
时,我得到一个错误:

KeyError: 'NestedMultiDict objects are read-only'
我已尝试将上述代码更改为:

perms = []
for k, v in d.iteritems():
    if k == "perms":
        if type(v) == str or type(v) == unicode:
            perms = [v]
        for perm in perms:
            d[perm] = "on"
但它给了我同样的错误

是否可以向列表中添加
MultiDict
值? 如果是,怎么做?
为什么
MultiDict
是只读的?

您不需要做您正在做的事情:)只需使用
request.getall('perm')
,它将始终返回一个列表

WebOb请求的几个属性是“multidict”;结构 (例如request.GET、request.POST和request.params)。多片语 是一个字典,其中一个键可以有多个值。这个 典型的例子是一个查询字符串,如?pref=red&pref=blue;这个 pref变量有两个值:红色和蓝色

在multidict中,当您执行request.GET['pref']时,您只会返回 “blue”(pref的最后一个值)。有时返回字符串,然后 有时返回列表是导致频繁异常的原因。如果 如果要返回所有值,请使用request.GET.getall('pref')。如果你 要确保只有一个值,请使用 request.GET.getone('pref'),如果存在异常,将引发异常 pref为零或多个值


(您也不应该尝试修改只读的
request.params
的值。请使用单独的dict。)

您不需要执行您正在执行的操作:)只需使用
request.getall('perm')
,它将始终返回一个列表

WebOb请求的几个属性是“multidict”;结构 (例如request.GET、request.POST和request.params)。多片语 是一个字典,其中一个键可以有多个值。这个 典型的例子是一个查询字符串,如?pref=red&pref=blue;这个 pref变量有两个值:红色和蓝色

在multidict中,当您执行request.GET['pref']时,您只会返回 “blue”(pref的最后一个值)。有时返回字符串,然后 有时返回列表是导致频繁异常的原因。如果 如果要返回所有值,请使用request.GET.getall('pref')。如果你 要确保只有一个值,请使用 request.GET.getone('pref'),如果存在异常,将引发异常 pref为零或多个值


(您也不应该尝试修改只读的
request.params
的值。请改用单独的dict。)

错误仍然发生在
d[perm]=“on”
(将其放入for循环而不是if语句中不会产生任何差异)。你想干什么?从原始代码看,您似乎正在尝试更改
d
字典,但它指出这是不可能的。您在新代码中尝试做什么?尝试复制只读字典,如
dd=d.copy()
,并查看是否可以修改
dd
,因为d是只读的。此外,您还可以在我的表单上使用isinstance(v,basestring)@DavidRobinson检查类型。我有可以打开和关闭的权限。在创建权限时,我选择要启用的权限
我正在尝试启用已选中的权限
。我最初收到一个
请求。json_body
,但它刚刚停止工作,所以我不得不更改它。在新代码中,我试图将
perms
中的值放入一个列表…@sagarchalise感谢您的想法奏效
:)
d[perm]=“on”
(将其放入for循环而不是if语句中没有任何区别)。你想干什么?从原始代码看,您似乎正在尝试更改
d
字典,但它指出这是不可能的。您在新代码中尝试做什么?尝试复制只读字典,如
dd=d.copy()
,并查看是否可以修改
dd
,因为d是只读的。此外,您还可以在我的表单上使用isinstance(v,basestring)
@DavidRobinson检查类型。我有可以打开和关闭的权限。在创建权限时,我选择要启用的权限
我正在尝试启用已选中的权限
。我最初收到一个
请求。json_body
,但它刚刚停止工作,所以我不得不更改它。在新代码中,我试图将
perms
中的值放入一个列表中…@sagarchalise感谢你的想法奏效
:)
感谢你的回答,这有点有用,但我只是复制了
d
谢谢你的回答,这有点有用,但我只是复制了
d