掌舵的鱼 发表于 2021-2-28 12:41:22

格式化嵌套字典中的输出

大家好,我试图使我的代码输出看起来像这个输出,没有任何尾随或领先的符号。有什么建议,我怎么能做到这一点?
currentuser ={'root':{'uid': 0,'username': 'root' ,'shell': '/bin/bash'},
      'daemon': {'uid': 1,'username': 'daemon' ,'shell': '/usr/sbin/nologin'},
      'bin': {'uid': 2,'username': 'bin', 'shell':'/usr/sbin/nologin'},
      'nsa': {'uid': 1000,'username': 'nsa', 'shell': '/bin/bash'}}

for key, value in currentuser.items():
print(f"\nKey: {key}")
print(f"Value: {value}")

维护和平天使 发表于 2021-3-16 18:27:25

currentuser ={'root':{'uid': 0,'username': 'root' ,'shell': '/bin/bash'},
'daemon': {'uid': 1,'username': 'daemon' ,'shell': '/usr/sbin/nologin'},
'bin': {'uid': 2,'username': 'bin', 'shell':'/usr/sbin/nologin'},
'nsa': {'uid': 1000,'username': 'nsa', 'shell': '/bin/bash'}}

for v in currentuser.values():
    print(f'|{v["uid"]}|{v["username"]}|{v["shell"]}')

河畔有约 发表于 2021-4-6 18:07:29

如果你想格式化,我更喜欢使用格式包
from tabulate import tabulate

currentuser ={'root':{'uid': 0,'username': 'root' ,'shell': '/bin/bash'},
      'daemon': {'uid': 1,'username': 'daemon' ,'shell': '/usr/sbin/nologin'},
      'bin': {'uid': 2,'username': 'bin', 'shell':'/usr/sbin/nologin'},
      'nsa': {'uid': 1000,'username': 'nsa', 'shell': '/bin/bash'}}


columns = list(next(iter(currentuser.values())).keys())
print(tabulate(, headers=columns, tablefmt="presto"))

一抹淡紫 发表于 2021-4-27 13:45:32

如果您不想导入,则必须将其编码。
使用 len(str) 查找每个列中每个元素的
长度。然后使用格式字符串以正确的长度打印该列中的每一个元素。
formats = ["<20", 10, 5]
data =

print("".join(f"| {d:{f}}" for d,f in zip(data,formats)))

水色天边 发表于 2021-5-14 16:25:53

您可以通过 f 字符串格式,因此对 Menator01 代码的调整很少,将提供所需的结果(数字对齐到右,文本向左排列,这是以表式显示这些数据类型的方式):
currentuser ={'root':{'uid': 0,'username': 'root' ,'shell': '/bin/bash'},
            'daemon': {'uid': 1,'username': 'daemon' ,'shell': '/usr/sbin/nologin'},
            'bin': {'uid': 2,'username': 'bin', 'shell':'/usr/sbin/nologin'},
            'nsa': {'uid': 1000,'username': 'nsa', 'shell': '/bin/bash'}}

for value in currentuser.values():
    print(f"{value['uid']:>8} {value['username']:<12} {value['shell']:<15}")

我个人喜欢这种类型的显示比分开更好。但是,如果您愿意,您可以很容易地将这些添加到 f 字符串中
页: [1]
查看完整版本: 格式化嵌套字典中的输出