我有这段Python代码:
constraints = {
'signupForms': [{key: form[key] for key in ['id']} for form in signup_forms],
'groups': [{'id': group[key] for key in ['member_group_id']} for group in groups],
'authorizedApps': [{key: app[key] for key in ['id']} for app in authorized_apps],
}
for step in len(eda_workflow['steps']):
eda_workflow['steps'][step]['constaints'] = constraints
我想要做的就是遍历每个工作流程'步骤'并将其约束设置为预先构建的相同约束dict
,但我不确定这是否是“pythonic” “方式
答案 0 :(得分:4)
术语" Pythonic"虽然是主观的,但却想尽可能少地编写代码,你可以使用" map"功能。 Map在可迭代中的每个项目上运行一个函数。所以你的代码看起来像这样:
map(lambda item: item['constaints'] = constraints, eda_workflow['steps'])
尽管代码较少,但由于map将返回结果列表,因此会占用更多内存。如果你关心记忆,你应该使用chepner的回答
答案 1 :(得分:3)
更多Pythonic(并且正确,与您当前的代码不同)将是
for item in eda_workflow['steps']:
item['constaints'] = constraints
迭代列表中的实际项目,而不是(正如您尝试的那样)对列表的索引进行迭代。