问题描述
我试图在单独的行上打印多个词典,这些词典包含相同的键,但是每次包含不同的值。 每次打印字典时,它们的值可能会有所不同,看起来可能很乱。 因为每次按键都在不同的地方。 例如:
{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}
每次打印字典时,如何以使键位于同一列的方式打印字典? 这样,字典每次都将具有相同的长度,因此看起来更整洁。
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_list
是dict
的列表,如下所示:
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 '}'
一排。 这令人满意吗? 您也可以在整行中使用 。 我不确定您要花费多少时间来学习输出格式。