用对齐的等号表示字典

2024-10-01 07:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想打印python类的表示(repr),如下所示:

varA         = 0.5
variableB    = 0.242
var_cadateta = 'test'

等号对齐的地方。我不希望每次更改变量名时都计数,所以我希望在函数中自动执行此操作。例如,有没有一种方法可以用字典轻松做到这一点,还是需要手工制作

我可以使用

var_max = max(len(k) for k in variables_dict.keys())

也许从那里开始,但我希望能有一种更像Python的方式


Tags: 方法函数testforlen字典var地方
1条回答
网友
1楼 · 发布于 2024-10-01 07:39:04

您可以为任何字典创建通用prettyRepr函数,并在类的repr方法或任何其他地方使用它:

def prettyRepr(d):
    return "\n".join(f"{k:{w}} = {v}" for w in [max(map(len,d))] for k,v in d.items())

示例使用:

varA         = 0.5
variableB    = 0.242
var_cadateta = 'test'

print("globals:")
print(prettyRepr(globals()))

def myFunction():
    varD         = 1.5
    variableE    = 3.14
    varamatras   = 'hello'
    print(prettyRepr(locals()))

print("\nLocals:")
myFunction()


class MyClass:

    def __init__(self):
        self.prop1 = 32
        self.property = "world"

    def __repr__(self):
        return prettyRepr(self.__dict__)

c = MyClass()
print("\nClass repr:")
print(c)

输出:

globals:
__name__        = __main__
__doc__         = None
__package__     = None
__loader__      = <class '_frozen_importlib.BuiltinImporter'>
__spec__        = None
__annotations__ = {}
__builtins__    = <module 'builtins' (built-in)>
__file__        = /Users/****/Documents/Python Scripts/playground.py
prettyRepr      = <function prettyRepr at 0x10e0c4378>
varA            = 0.5
variableB       = 0.242
var_cadateta    = test

Locals:
varD       = 1.5
variableE  = 3.14
varamatras = hello

Class repr:
prop1    = 32
property = world

相关问题 更多 >