具有自定义浮点格式的 pprint

2023-11-21

我有一个带有元组键的嵌套字典结构。当我使用 pprint 漂亮地打印字典时,条目如下所示:

...
 ('A', 'B'): {'C': 0.14285714285714285,
              'D': 0.14285714285714285,
              'E': 0.14285714285714285,
              'F': 0.14285714285714285,
              'G': 0.14285714285714285,
              'H': 0.14285714285714285,
              'I': 0.14285714285714285},
...

它非常漂亮,但我想通过减少浮点数中的一些额外数字来进一步定制它。我认为可以通过子类化来实现pprint.PrettyPrint但我不知道该怎么做。

Thanks.


正如你所说,你可以通过子类化来实现这一点PrettyPrinter并覆盖format方法。请注意,输出不仅是格式化的字符串,还包括一些标志。

一旦完成,您还可以概括这一点,并将具有不同类型所需格式的字典传递到构造函数中:

class FormatPrinter(pprint.PrettyPrinter):

    def __init__(self, formats):
        super(FormatPrinter, self).__init__()
        self.formats = formats

    def format(self, obj, ctx, maxlvl, lvl):
        if type(obj) in self.formats:
            return self.formats[type(obj)] % obj, 1, 0
        return pprint.PrettyPrinter.format(self, obj, ctx, maxlvl, lvl)

Example:

>>> d = {('A', 'B'): {'C': 0.14285714285714285,
...                   'D': 0.14285714285714285,
...                   'E': 0.14285714285714285},
...       'C': 255}
...
>>> FormatPrinter({float: "%.2f", int: "%06X"}).pprint(d)
{'C': 0000FF,
 ('A', 'B'): {'C': 0.14,
              'D': 0.14,
              'E': 0.14}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有自定义浮点格式的 pprint 的相关文章

随机推荐

  • 如何最好地处理 C/C++ 中的动态多维数组?

    在 C 和 或 C 中操作动态 所有维度直到运行时才知道 多维数组的可接受 最常用的方法是什么 我正在尝试找到最简洁的方法来完成此 Java 代码的功能 public static void main String args Scanner
  • std::move 和 RVO 优化

    我最近读过如何std move可以通过仅移动值而不是复制它们来加速代码 所以我做了一个测试程序来比较速度std vector 代码 include
  • Node.js 服务器超时问题(EC2 + Express + PM2)

    我对运行生产 Node js 应用程序还比较陌生 最近我遇到了服务器超时的问题 基本上在一定的使用量和时间后 我的 Node js 应用程序停止响应请求 我什至不再看到在我的控制台上触发路由 就好像整个事情都停止了 来自我的客户端 运行 A
  • 如何使用 Odoo 中的方法设置默认值?

    如何计算 Odoo 8 中对象字段中的默认值模型 py 我们不能使用 defaultOdoo 8 中不再有属性 field name fields datatype string value default compute default
  • FileUpload:未找到 DeferredFileOutputStream 类? [复制]

    这个问题在这里已经有答案了 我正在使用 apache FileUpload 来处理 文件上传 我将它与码头一起使用 servlet 看到多部分请求 但在执行时抛出 NoClassDefFoundError 异常 protected void
  • ng2-charts - 无法绑定到“数据集”,因为它不是“基本图表”的已知属性

    版本 Cordova 6 3 1 Gulp CLI 1 2 2 Ionic 框架 2 0 0 rc 0 Ionic CLI 版本 2 1 0 我在用着ng2 图表在我的 ionic2 应用程序中 导入不import ChartsModule
  • 可逆树长关系

    我正在尝试用 纯 Prolog 编写可逆关系 没有is 剪切或类似的东西 是的 这是作业 我必须承认我不知道如何做 我没有看到任何创建这样的东西的过程 我们被赋予了 不纯粹 但可逆的算术关系 加 乘 等于 减 我们必须使用它们来创建这些关系
  • 如何定义旋转函数

    如何定义一个旋转函数来生成给定列表的所有旋转 例如 旋转 1 2 3 4 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 我写了一个shift函数 可以重新排列顺序 shift Int gt Int shift x tail
  • AH01215:(8)执行格式错误:'/var/www/python/hello.py'的执行失败:/var/www/python/hello.py

    我正在尝试在 apache 服务器中将 python 作为 CGI 运行 Python 版本是 2 7 12 这是我的 apache conf 文件
  • useQuery 的奇怪问题:未读取查询参数

    我有一个传递字符串的组件 userToFetch 将其作为参数化查询中的可变参数 该组件如下所示 pages index jsx import React from react import useQuery from apollo rea
  • CSS - 行高属性,它是如何工作的(简单)

    So in 这个简单的例子我的最终结果是 这是一个非常简单的问题 但我就是无法理解它 为了实现我使用的数字的垂直居中 line height 100px 效果很好 并且一直在反复试验的基础上进行 我的问题具体是为什么line height
  • 为什么函数中不允许使用“from ... import *”? [复制]

    这个问题在这里已经有答案了 From 文档 导入的通配符形式 from module import 仅允许在模块级别 尝试在类或函数定义中使用它会引发SyntaxError 为什么 避免在函数中使用它有什么意义 有什么问题 CPython
  • WebView使用loadDataWithBaseUrl跳转到锚点

    我的 Android 应用程序使用 WebView 来显示我 即时 生成的一堆 HTML 代码 HTML 代码使用以下代码加载 StringBuilder builder new StringBuilder HTML builder app
  • jquery UI 对话框和 Asp.net UpdatePanel

    我正在寻找用于 asp net 的 JavaScript 模式对话框解决方案 jquery UI 对话框似乎不错 但它将对话框容器移动到 body 标记的底部 我更改了对话框代码以将对话框保留为 asp net 形式 但它仍然不在 upda
  • MATLAB - FFT 缺少基础[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我目前正在从事我的第四年项目 计算机科学 其中涉及音乐 gt 乐谱的自动转录 我目前正在 Matlab 中进行 但在某个阶段必须转换为 java 我的问题 我的程序返回纯正弦音的
  • 选择区域 OpenCV

    我是 OpenCV 新手 我想选择视频 图像中的特定区域进行检测 就我而言 我想检测仅在路上而不是在停车场的汽车 嗯 选择汽车需要使用训练数据 但选择 ROI 感兴趣区域 相当简单 考虑img cv2 imread image 在这种情况下
  • 如何使用“--multi-dex”选项?

    2013 11 13 18 39 09 XlApp Dx trouble writing output Too many method references 66024 max is 65536 You may try using mult
  • 当需要 Node.js 中的模块时,“点斜杠”(./) 是否是必需的?

    我正在学习 Node js 并使用 Visual Studio 2015 Node JS 扩展编写一个简单的模块 I know 意思是 在同一目录中查找文件 但在我见过的大多数系统中 比如说 include在 C 中 转发 是可选的 我尝试
  • javax.net.ssl.SSLException:收到致命警报:bad_record_mac

    我得到了一个javax net ssl SSLException Received fatal alert bad record mac用于 HTTPS 连接 并非每个请求都会发生这种情况 如果我发送相同的请求 10 次 我只会收到一两次此
  • 具有自定义浮点格式的 pprint

    我有一个带有元组键的嵌套字典结构 当我使用 pprint 漂亮地打印字典时 条目如下所示 A B C 0 14285714285714285 D 0 14285714285714285 E 0 14285714285714285 F 0 1