如何从字典打印?

时间:2019-05-09 15:47:40

标签: python python-3.x

我想知道如何将字典中的所有键打印在一行上,将值打印在下一行,以便它们对齐。

任务是用python创建纸牌纸牌游戏。已经完成了大部分操作,但是我希望在视觉效果上有所改善。我知道如何使用for循环为每个值和键打印行,但是我在学校正在做的任务要求我这样做。我还尝试为每行和“ print(list1)” print(list2)创建新列表,但这看起来很丑。

    FireKort ={
        'A': None,#in my code i have the cards as objects here with value 
    #and type
        'B': None,#ex. object1: 8, cloves; object2: King, hearts 
        'C': None,
        'D': None,
        'E': None,
        'F': None,
        'G': None,
        'H': None
        }
    def f_printK():
        global FireKort
        for key in FireKort:
            print('Stokk:',key,' Gjenstående:',len(FireKort[key]))
            try:
                print(FireKort[key][0].sort, FireKort[key][0].valør)
            except:
                print('tom')


    ##here are the lists i tried:
    ##    navn=[]
    ##    kort=[]
    ##    antall=[]
    ##    for key in FireKort:
    ##        navn.append((key+' '))
    ##        kort.append([FireKort[key][0].sort,FireKort[key][0].valør])
    ##        antall.append(  str(len(FireKort[key])))
    ##    print(navn)
    ##    print(kort)
    ##    print(antall)

A B C D E F G H [♦9] [♣A] [♠Q] [♣8] [♦8] [♣J] [♣10] [♦7]  4 4 4 4 4 4 4 4

3 个答案:

答案 0 :(得分:1)

您尝试使用pprint吗?

  

pprint模块提供了“漂亮地​​打印任意Python数据结构

的功能。

https://docs.python.org/2/library/pprint.html

答案 1 :(得分:0)

尝试一下:

d = { ... }
keys = [ str(q) for q in d.keys() ]
values = [ str(q) for q in d.values() ]
txts = [ (str(a), str(b)) for a, b in zip(keys, values) ]
sizes = [ max(len(a), len(b)) for a, b in txts ]
formats = [ '%%%ds' % q for q in sizes ]
print(' '.join(a % b for a, b in zip (formats, keys)))
print(' '.join(a % b for a, b in zip (formats, values)))

简而言之:

  • 首先,我们获得键的str值和字典d的值(由于我们将使用它们两次,因此不妨将它们存储在本地)
  • 我们计算每个“列”的最大大小
  • 我们为%运算符创建格式
  • 然后我们打印

答案 2 :(得分:0)

可以使用ljust的{​​{1}}方法来完成。 示例:

str

输出:

d = {'A':'some','B':'words','C':'of','D':'different','E':'length'}
keys = list(d.keys())
values = list(d.values())
longest = max([len(i) for i in keys]+[len(i) for i in values])
print(*[i.ljust(longest) for i in keys])
print(*[i.ljust(longest) for i in values])

请注意,我利用A B C D E some words of different length .keys()返回键和值的顺序相同的事实,如果它们之间没有对给定的.values()进行任何操作。