小白教程

 找回密码
 立即注册
查看: 6463|回复: 4

格式化嵌套字典中的输出

[复制链接]

1

主题

2

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-2-28 12:41:22 | 显示全部楼层 |阅读模式
大家好,我试图使我的代码输出看起来像这个输出,没有任何尾随或领先的符号。有什么建议,我怎么能做到这一点?
  1. currentuser ={'root':{'uid': 0,'username': 'root' ,'shell': '/bin/bash'},
  2.         'daemon': {'uid': 1,'username': 'daemon' ,'shell': '/usr/sbin/nologin'},
  3.         'bin': {'uid': 2,'username': 'bin', 'shell':'/usr/sbin/nologin'},
  4.         'nsa': {'uid': 1000,'username': 'nsa', 'shell': '/bin/bash'}}

  5. for key, value in currentuser.items():
  6. print(f"\nKey: {key}")
  7. print(f"Value: {value}")
复制代码


回复

使用道具 举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-3-16 18:27:25 | 显示全部楼层
  1. currentuser ={'root':{'uid': 0,'username': 'root' ,'shell': '/bin/bash'},
  2. 'daemon': {'uid': 1,'username': 'daemon' ,'shell': '/usr/sbin/nologin'},
  3. 'bin': {'uid': 2,'username': 'bin', 'shell':'/usr/sbin/nologin'},
  4. 'nsa': {'uid': 1000,'username': 'nsa', 'shell': '/bin/bash'}}

  5. for v in currentuser.values():
  6.     print(f'|{v["uid"]}|{v["username"]}|{v["shell"]}')
复制代码
回复

使用道具 举报

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2021-4-6 18:07:29 | 显示全部楼层
如果你想格式化,我更喜欢使用格式包
  1. from tabulate import tabulate

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


  6. columns = list(next(iter(currentuser.values())).keys())
  7. print(tabulate([x.values() for x in currentuser.values()], headers=columns, tablefmt="presto"))
复制代码
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-4-27 13:45:32 | 显示全部楼层
如果您不想导入,则必须将其编码。
使用 len(str) 查找每个列中每个元素的
长度。然后使用格式字符串以正确的长度打印该列中的每一个元素。
  1. formats = ["<20", 10, 5]
  2. data = [15, "Hello", "/bin/sh"]

  3. print("".join(f"| {d:{f}}" for d,f in zip(data,formats)))
复制代码
回复

使用道具 举报

1

主题

2

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-5-14 16:25:53 | 显示全部楼层
您可以通过 f 字符串格式,因此对 Menator01 代码的调整很少,将提供所需的结果(数字对齐到右,文本向左排列,这是以表式显示这些数据类型的方式):
  1. currentuser ={'root':{'uid': 0,'username': 'root' ,'shell': '/bin/bash'},
  2.               'daemon': {'uid': 1,'username': 'daemon' ,'shell': '/usr/sbin/nologin'},
  3.               'bin': {'uid': 2,'username': 'bin', 'shell':'/usr/sbin/nologin'},
  4.               'nsa': {'uid': 1000,'username': 'nsa', 'shell': '/bin/bash'}}

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

我个人喜欢这种类型的显示比分开更好。但是,如果您愿意,您可以很容易地将这些添加到 f 字符串中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-9-20 14:45 , Processed in 0.076196 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表