gpt4 book ai didi

python - 格式化要在 jinja2 模板中呈现的嵌套 Python 字典的最佳方法

转载 作者:行者123 更新时间:2023-11-28 16:25:54 25 4
gpt4 key购买 nike

你好,我有一个像这样的 Python 嵌套字典:

fv_solution = {
'relaxationFactors':
{
'fields':
{
'\"(p|pa)\"': 0.3,
'alpha': 0.1,
},
'equations':
{
'\"(U|Ua)\"': 0.7,
'\"(k|epsilon)\"': 0.7,
}
},
'relaxationFactors2':
{
'fields':
{
'\"(p|pa)\"': 0.3,
'alpha': 0.1,
},
'equations':
{
'\"(U|Ua)\"': 0.7,
'\"(k|epsilon)\"': 0.7,
}
}
}

我想像这样渲染到文件:

relaxationFactors
{
fields
{
"(p|pa)" 0.3;
alpha 0.1;
}
equations
{
"(U|Ua)" 0.7;
"(k|epsilon)" 0.7;
}
}

relaxationFactors2
{
fields
{
"(p|pa)" 0.3;
alpha 0.1;
}
equations
{
"(U|Ua)" 0.7;
"(k|epsilon)" 0.7;
}
}

我最好的方法是使用替换过滤器,但除此之外,它不是一个优雅的解决方案,结果也不如预期

我的过滤器

{{ data|replace(':','    ')|replace('{','\n{\n')|replace('}','\n}\n')|replace(',',';\n')|replace('\'','') }}

结果

{  # <- not needed
relaxationFactors2
{
fields
{
alpha 0.1;
"(p|pa)" 0.3 # <- missing ;
}
; # <- aditional ;
equations
{
"(U|Ua)" 0.7;
"(k|epsilon)" 0.7 # <- missing ;
}

} # <- not needed
; # <- aditional ;
relaxationFactors
{
fields
{
alpha 0.1;
"(p|pa)" 0.3 # <- missing ;
}
; # <- aditional ;
equations
{
"(U|Ua)" 0.7;
"(k|epsilon)" 0.7 # <- missing ;
}

}

} # <- not needed ;

最佳答案

你应该写一个自定义过滤器......

def format_dict(d, indent=0):
output = []
for k, v in d.iteritems():
if isinstance(v, dict):
output.append(indent*' ' + str(k))
output.append(indent*' ' + '{')
output.append(format_dict(v, indent+4))
output.append(indent*' ' + '}')
else:
output.append(indent*' ' + str(k).ljust(16) + str(v) + ';')
return '\n'.join(output)

... 并按照说明进行设置 officially here或者,用一个完整的例子,here .然后,您可以:

{{ data|format_dict }}

关于python - 格式化要在 jinja2 模板中呈现的嵌套 Python 字典的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com