zhang1497 发表于 2021-11-26 16:07

有没有办法将字典的键值输出的时候整齐排列?

本帖最后由 zhang1497 于 2021-11-28 19:21 编辑

自己给自己做了一个练习,然后每次做完以后,把错题增加到另一个空字典中。以便自己查看还有哪下不足。
但是在输出错题 键值的时候因为各个键值占位不同,导致输出的时候比较乱。
i = 0
for key,value in error.items():
    i = i + 1
    if (i+1) % 2 == 0:
      print(key,":",value,end="\t" )
    else:
      print(key, ":", value)
print('\n-----------------------')

结果:
https://www.hualigs.cn/image/61a09555c25ad.jpg

经过大佬【三滑稽甲苯】指导以后,终于对齐了。很好看,对于强迫症的我来说舒服了。
代码如下
for key,value in error.items():
    i += 1
    if (i+1) % 5 == 1:
      print('%+4s:%-4s' % (key, value))
    else:
      print('%+4s:%-4s' % (key, value),end="\t" )
print('\n-----------------------')

运行如下:
https://www.hualigs.cn/image/61a365b993f2e.jpg


三滑稽甲苯 发表于 2021-11-26 16:12

如果长度相差不大的话用tab可以直接对齐
相差较大的话建议用"%5s" % key之类的格式化字符串输出
偷懒的方法:使用第三方库,例如prettytable, rich

zhang1497 发表于 2021-11-26 16:23

三滑稽甲苯 发表于 2021-11-26 16:12
如果长度相差不大的话用tab可以直接对齐
相差较大的话建议用"%5s" % key之类的格式化字符串输出
偷懒的方 ...

差别不是很大,文字最多3个字,前面的数字也最多2位数。怎么用tab对齐?

年华丶 发表于 2021-11-26 16:41

搞个网页 返回到表格里

开新未来 发表于 2021-11-26 16:55

感谢分享,辛苦了

三滑稽甲苯 发表于 2021-11-26 17:00

zhang1497 发表于 2021-11-26 16:23
差别不是很大,文字最多3个字,前面的数字也最多2位数。怎么用tab对齐?

试试看
for key, value in error.items():
    i += 1
    if (i+1) & 1:
      print("%s\t: %s" % (key, value))
    else:
      print("%s\t: %s" % (key, value), end='\t')

zhang1497 发表于 2021-11-26 18:31

三滑稽甲苯 发表于 2021-11-26 17:00
试试看
for key, value in error.items():
    i += 1


好一点,但是碰到三个字的value,又乱了。例如:
00:望远镜01:小树
02:铃儿03:凳子

冥界3大法王 发表于 2021-11-26 19:49

zhang1497 发表于 2021-11-26 18:31
好一点,但是碰到三个字的value,又乱了。例如:
00:望远镜01:小树
02:铃儿03:凳子

显然这种得以数字为排序对象。
比如那个x64dbg生成的INI配置文件中
工具、脚本、命令就是按字母升序排列的
最后输出的结果多于10个时
顺序就是乱的了。

zhang1497 发表于 2021-11-26 20:38

冥界3大法王 发表于 2021-11-26 19:49
显然这种得以数字为排序对象。
比如那个x64dbg生成的INI配置文件中
工具、脚本、命令就是按字母升序排 ...

那应该是没办法了,估计要实现也要绕很大一圈。

三滑稽甲苯 发表于 2021-11-26 23:20

zhang1497 发表于 2021-11-26 20:38
那应该是没办法了,估计要实现也要绕很大一圈。

用'%-8s:%-8s' % (key, value)格式化试试看,数字自己调一下
页: [1] 2
查看完整版本: 有没有办法将字典的键值输出的时候整齐排列?