为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python 中打印表格字典

如何在 Python 中打印表格字典

慕标5832272 2021-06-08 11:05:11
假设我有一个以下形式的字典:the_board = {(1,1) : ' ', (1,2) : ' ', (1,3) : ' ',             (2,1) : ' ', (2,2) : ' ', (2,3) : ' ',             (3,1) : ' ', (3,2) : ' ', (3,3) : ' ',}我想逐行打印每一行。目前我做这样的事情:def display(board):    var = list(board.values())  # Iterator to print out the table    i = 0    j = 0    maxi = len(var)    while i < maxi:        while j < (i + 3):            print(var[j], end="")            if j < i+2:                print('|', end='')            j += 1        print()        if i < (maxi-1):            print("-+-+-")        i += 3我知道这很可能不是实现我想要的最“pythonic 方式”。我将如何以更 Pythonic 的方式做到这一点?(我知道我可以使用键来实现这一点,因为我给了它们坐标键,但我可能需要打印一个没有有序/下标键的表格字典,所以我希望有一个更通用的解决方案)。 发现了 Python 的range函数,所以现在我的代码是这样的:def display(board):    var = list(board.values())  # Iterator to print out the table    maxi = len(var)    for i in range(0, maxi, 3):        for j in range(i, (i+3)):            print(var[j], end="")            if j < i+2:                print('|', end='')        print()        if i < (maxi-1):            print("-+-+-")仍然不确定这是编写它的最佳方式。
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

def chunks(l,n):

""" Split list into chunks of size n """

    for i in range(0, len(l), n):

        yield l[i:i+n]


def display(board):

    for values in chunks(list(the_board.values()), 3):

        print('|'.join(values))    # use str.join to concat strings with separators

        print('-+-+-')


查看完整回答
反对 回复 2021-06-09
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

嗨,如果我理解正确的话,这应该是解决方案


board = {(1,1) : ' a ', (1,2) : ' b ', (1,3) : ' c  ',

             (2,1) : 'd ', (2,2) : 'e ', (2,3) : ' f ',

             (3,1) : 'g ', (3,2) : ' h', (3,3) : ' i',}


  print ( "Cordiantes --- Values")

  for key , value in board.items():

  print(key , "         " , value)

输出将是

//img1.sycdn.imooc.com//60c0812400013b8e03930247.jpg

查看完整回答
反对 回复 2021-06-09
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您可以设置列数:


the_board = {

    (1, 1): ' ', (1, 2): ' ', (1, 3): ' ',

    (2, 1): ' ', (2, 2): ' ', (2, 3): ' ',

    (3, 1): ' ', (3, 2): ' ', (3, 3): ' '

}



def display(board, ncols):

    items = list(board.values())

    separate_line = '\n' + '+'.join('-' * ncols) + '\n'

    item_lines = []

    i = 0

    while i + ncols <= len(items):

        item_line = '|'.join(items[i:i + ncols])

        item_lines.append(item_line)

        i += ncols

    output = separate_line.join(item_lines)

    print(output)



display(the_board, ncols=3)


查看完整回答
反对 回复 2021-06-09
  • 3 回答
  • 0 关注
  • 370 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信