【问题标题】:How to print a dictionary with keys on identical columns each time?如何每次都在相同的列上打印带有键的字典?
【发布时间】:2023-03-25 10:05:01
【问题描述】:

我正在尝试在不同的行上打印多个字典,这些字典包含相同的键,但每次都包含不同的值。这些值可能会有所不同,每次打印字典时都会显得混乱;因为钥匙每次都在不同的地方。例如:

{0: 10, 1: 5, 2: 2, 3: 4, 4: 1, 5: 1, 6: 0, 7: 0, 8: 0, 9: 0, 10: 1}
{0: 309, 1: 156, 2: 76, 3: 36, 4: 22, 5: 6, 6: 4, 7: 5, 8: 1, 9: 0, 10: 1}
{0: 478, 1: 216, 2: 125, 3: 57, 4: 37, 5: 9, 6: 2, 7: 2, 8: 2, 9: 0, 10: 1}
{0: 1287, 1: 717, 2: 332, 3: 165, 4: 94, 5: 26, 6: 15, 7: 9, 8: 8, 9: 4, 10: 1}
{0: 104, 1: 53, 2: 24, 3: 17, 4: 6, 5: 4, 6: 0, 7: 1, 8: 0, 9: 1, 10: 1}

如何在每次打印字典时以键位于同一列的方式打印字典?这样,字典每次的长度都会相等,因此会显得更整洁。

【问题讨论】:

    标签: python python-3.x dictionary printing multiple-columns


    【解决方案1】:

    由于dict 本质上是无序的,因此您无法打印有序的内容。为了实现这一点,您可以根据键对dict 的内容进行排序,并生成类似于字典的repr 的字符串。例如:

    for item in my_list:
        print('{%s}' % ', '.join('%s: %s' % (k, v) for k, v in sorted(item.items())))
    
    # which prints:
    #   {0: 10, 1: 5, 2: 2, 3: 4, 4: 1, 5: 1, 6: 0, 7: 0, 8: 0, 9: 0, 10: 1}
    #   {0: 309, 1: 156, 2: 76, 3: 36, 4: 22, 5: 6, 6: 4, 7: 5, 8: 1, 9: 0, 10: 1}
    #   {0: 478, 1: 216, 2: 125, 3: 57, 4: 37, 5: 9, 6: 2, 7: 2, 8: 2, 9: 0, 10: 1}
    #   {0: 1287, 1: 717, 2: 332, 3: 165, 4: 94, 5: 26, 6: 15, 7: 9, 8: 8, 9: 4, 10: 1}
    #   {0: 104, 1: 53, 2: 24, 3: 17, 4: 6, 5: 4, 6: 0, 7: 1, 8: 0, 9: 1, 10: 1}
    

    其中my_listdictas 的列表:

    my_list = [{0: 10, 1: 5, 2: 2, 3: 4, 4: 1, 5: 1, 6: 0, 7: 0, 8: 0, 9: 0, 10: 1},
               {0: 309, 1: 156, 2: 76, 3: 36, 4: 22, 5: 6, 6: 4, 7: 5, 8: 1, 9: 0, 10: 1},
               {0: 478, 1: 216, 2: 125, 3: 57, 4: 37, 5: 9, 6: 2, 7: 2, 8: 2, 9: 0, 10: 1},
               {0: 1287, 1: 717, 2: 332, 3: 165, 4: 94, 5: 26, 6: 15, 7: 9, 8: 8, 9: 4, 10: 1},
               {0: 104, 1: 53, 2: 24, 3: 17, 4: 6, 5: 4, 6: 0, 7: 1, 8: 0, 9: 1, 10: 1}
              ]
    

    【讨论】:

      【解决方案2】:

      一种方法是学习数据框接口,例如 PANDAS,这样您就可以将值放入带标签的列中。这可能是最好的方法。

      如果您需要使用自己的编码在 Python 中执行此操作,我建议您编写一个漂亮的打印机,按顺序获取每个元素,将其打印在格式良好的列中(例如,以 \t 字符开头),并通过蛮力添加大括号。例如:

      print '{',
      for key in range(key_min, key_max+1):
          print key, ':', dict[key], ',\t',
      print '}'
      

      这样一排。这令人满意吗?您也可以在整行中使用formatted print;我不确定您要花多少时间学习输出格式。

      【讨论】:

      • 嗨。我听从了你对 Panda 数据框的建议。输出看起来很棒。
      猜你喜欢
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多