代码之家  ›  专栏  ›  技术社区  ›  ViaTech

创建“压缩”字典

  •  -2
  • ViaTech  · 技术社区  · 6 年前

    {'field1_0': 'FieldName1', 'field2_0': 'DataType1', 
        'field1_1': 'FieldName 2', 'field2_1': 'DataType2'}
    

    _ " : field1_0 field2_0 field1_1 , field2_1 由于尾随数字而分组。

    例如,以上面的dict为例。我想要一个如下所示的dict:

    {'FieldName1': 'DataType1', 'FieldName2': 'DataType2'}
    

    关于我正在做的事情的上下文:我有一些动态Django表单,允许用户在我的项目中创建自定义报告。要做到这一点,我有一个表单,允许他们输入一个数字,他们想要的字段数量。提交此表单时,动态表单会为每个输入的元素数创建2个字段(1个用于字段名称,1个用于数据类型,即。 'field1_{x}': 'field name' 'field2_{x}':'datatype'

    1 回复  |  直到 6 年前
        1
  •  6
  •   martineau    5 年前

    假设字段连续编号且始终正确配对,则可以使用简单的 dict 理解:

    d = {'field1_0': 'FieldName1', 'field2_0': 'DataType1', 
         'field1_1': 'FieldName 2', 'field2_1': 'DataType2'}
    
    new_d = {d[f'field1_{x}']: d[f'field2_{x}'] for x in range(len(d)//2)}
    

    结果:

    {'FieldName1': 'DataType1', 'FieldName2': 'DataType2'}