You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字典金额格式化的嵌套循环改写为字典推导式?

嵌套字典金额格式化的单行字典推导式写法

原始数据与需求

我们有一个包含客户分类的嵌套字典:

ddd = {'category 1:': 
         {'A': 50.5,
          'B': 28.9,
          'C': 46.3,
          'D': 513.8},
       'category 2:': {'E': 20.5, 'C': 48.1},
       'category 3:': {'D': 28.2, 'F': 68.3}}

需要将子字典中所有代表美元金额的数字,转换为带两位小数的美元格式字符串(例如'A': 50.5变为'A': '$50.50'),最终得到如下格式的字典:

{'category 1:': {'A': '$50.50', 'B': '$28.90', 'C': '$46.30', 'D': '$513.80'}, 'category 2:': {'E': '$20.50', 'C': '$48.10'}, 'category 3:': {'D': '$28.20', 'F': '$68.30'}}

已有可行方案(嵌套循环)

以下嵌套循环代码可以实现需求:

for a,b in ddd.items():
    for i,j in b.items():
        b[i] = "$" + "{0:,.2f}".format(j)

错误的推导式尝试

尝试将嵌套循环改写为单行字典推导式时,以下写法无法正常运行:

{a:b for i,("$" + "{0:,.2f}".format(j)) in b.items() for a,b in ddd.items()} 

正确的单行字典推导式写法

需要使用嵌套字典推导式,外层处理主字典的分类键值对,内层处理每个分类下的客户金额格式化:

ddd_formatted = {category: {client: f"${amount:,.2f}" for client, amount in clients.items()} for category, clients in ddd.items()}

如果偏好使用format方法而非f-string,也可以写成:

ddd_formatted = {category: {client: "$" + "{0:,.2f}".format(amount) for client, amount in clients.items()} for category, clients in ddd.items()}

执行后即可得到符合要求的格式化嵌套字典。

内容的提问来源于stack exchange,提问作者Bear Bear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:35:24