【发布时间】:2019-01-07 21:48:19
【问题描述】:
我有一个 python 字典,我想根据键压缩成不同的字典:
{'field1_0': 'FieldName1', 'field2_0': 'DataType1',
'field1_1': 'FieldName 2', 'field2_1': 'DataType2'}
在这篇文章中,我的键是自动表单字段名称,它们按“_”后面提供的数字分组:field1_0、field2_0 和 field1_1、field2_1 分组由于尾随编号而被分组。
我想将这些分组元素组合起来,并将它们压缩成键值对的字典,其中分组项的每个值都在新字典中。
以上面的dict为例。我想要一个看起来像这样的字典:
{'FieldName1': 'DataType1', 'FieldName2': 'DataType2'}
关于我正在做的事情:我有一些动态 Django 表单,允许用户在我的项目中创建自定义报告。为此,我有 1 个表单,允许他们输入所需字段数的数字。提交此表单时,动态表单会为每个输入的元素数量创建 2 个字段(1 个用于字段名称,1 个用于数据类型,即 'field1_{x}': 'field name' 和 'field2_{x}':'datatype')。我将提交这个创建我们正在讨论的 dict 的提交,并将其传递到一个不同的动态表单中,该表单根据字段名称和数据类型创建字段,然后中提琴你已经有了可以基于 3rd 方声明创建的自定义表单。
【问题讨论】:
-
我认为这个想法是
fieldx_0是一个值为fieldx_1的键,用于x = 1, 2, ...。 -
知道了,谢谢,但仍然认为你有一个错误的
' ' -
所以你在第二个数字上分组;关注
_。拆分您的键,将最后一部分用作新字典中的键来跟踪组,使值成为键和值的两个元素的列表,根据键中的第一个数字分配给该列表(1- > 索引 0,2-> 索引 1,所以使用int()并减去 1)。 -
或者,使用像 WTForms 这样不错的表单抽象库,让它为您处理请求数据和 Python 数据模型之间的映射。
标签: python dictionary dictionary-comprehension