Bur*_*ing 8 python django dictionary python-2.7 django-rest-framework
我正在做关于处理request.data和from.cleaned_data问题的Django 项目。当用户仅输入指定字段时,它将向我的服务器发送请求。接下来,表单类处理请求,除了处理输入字段并且不从表单内置字段返回任何输入字段。
这是请求数据:
<QueryDict: {u'is_public': [u'True']}>
Run Code Online (Sandbox Code Playgroud)
这是来自类的清理数据:
{'name': u'', 'devie_type': u'', 'is_public': True, 'serial_num': u'', 'is_online': False, 'operation_system': u''}
Run Code Online (Sandbox Code Playgroud)
我知道这些是字典类型。我希望得到他们的联合键和清理数据的值。我希望它返回:
{u'is_public': True}
Run Code Online (Sandbox Code Playgroud)
这是我的尝试:
a = {}
for k in request.data:
if k in the_form.cleaned_data:
a[k] = the_form.cleaned_data[k]
print a
Run Code Online (Sandbox Code Playgroud)
它可读吗?或者是否有任何关于在 python 中处理联合字典的内置函数?
您可以使用交集操作(这听起来像您真正想要的,而不是联合)来有效地将迭代限制为两个dicts 共有的键,然后使用字典理解来相当有效地实现这一点:
a = {k: the_form.cleaned_data[k]
for k in request.data.viewkeys() & the_form.cleaned_data.viewkeys()}
Run Code Online (Sandbox Code Playgroud)
因此,当请求和清理数据中都存在一个键时,您将拥有从该键到清理数据的映射。仅出现在一个输入dict或另一个输入中的所有其他键都将被删除。在 Python 3 中,您将替换.viewkeys()为 just .keys()(这在.viewkeys()引入Python 2.7 之前不起作用)。
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |