【问题标题】:What is a clean way to map a template without to know the total items什么是在不知道总项目的情况下映射模板的干净方法
【发布时间】:2021-09-20 14:42:12
【问题描述】:

在此示例中,我在数据列表中有 2 个项目,并希望使用每个项目解析模板并生成结果:

template = [  {"id": "<ID>", "interfaces": [{"port": "<PORT>", "description": "<NAME>"}]} ]

data = [  {'id': '1234', 'port': 'ETH0', "description": "MyDescName"},
          {'id': '4567', 'port': 'ETH1', "description": "MyDescName-2"} ]

result  = [  {"id": "1234", "interfaces": [{"port": "ETH0", "description": "MyDescName"}]},
             {"id": "4567", "interfaces": [{"port": "ETH1", "description": "MyDescName-2"}] ]

【问题讨论】:

  • 你能提供更多的背景信息吗?您是否收到这种格式的模板,或者您事先已经知道它?您只是想知道如何将数据转换为具有模板格式的元素,还是需要为许多不同的模板执行此操作?
  • 是的,我收到了这种格式的模板。我需要将数据转换为具有模板格式的元素。
  • 模板是动态的吗?你接受的模板有什么限制吗?
  • 模板是静态的,没有约束。

标签: python templates


【解决方案1】:
data = [  
        {'id': '1234', 'port': 'ETH0', "description": "MyDescName"},
        {'id': '4567', 'port': 'ETH1', "description": "MyDescName-2"},
       ]
                 
result = []

for element in data:
  result.append({"id": element["id"], "interfaces": [{"port": element["port"], "description": element["description"]}]})

print(result)

这一款也可以。

result2 = list(map(lambda element: {"id": element["id"], "interfaces": [{"port": element["port"], "description": element["description"]}]}, data))

给出输出

[
 {'id': '1234', 'interfaces': [{'port': 'ETH0', 'description': 'MyDescName'}]}, 
 {'id': '4567', 'interfaces': [{'port': 'ETH1', 'description': 'MyDescName-2'}]}
]

【讨论】:

  • res.append = result.append
  • 糟糕!修正了错字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多