当前位置: 代码迷 >> python >> 如何每次在同一列上打印带有键的字典?
  详细解决方案

如何每次在同一列上打印带有键的字典?

热度:78   发布时间:2023-06-13 13:53:45.0

我试图在单独的行上打印多个词典,这些词典包含相同的键,但是每次包含不同的值。 每次打印字典时,它们的值可能会有所不同,看起来可能很乱。 因为每次按键都在不同的地方。 例如:

{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}

每次打印字典时,如何以使键位于同一列的方式打印字典? 这样,字典每次都将具有相同的长度,因此看起来更整洁。

由于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_listdict的列表,如下所示:

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}
          ]

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

如果您需要使用自己的代码在Python中执行此操作,建议您编写一个漂亮的打印机,该打印机按顺序排列每个元素,并以格式正确的列打印该元素(例如,以\\ t字符开头),并添加用蛮力支撑。 例如:

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

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

  相关解决方案