如何每次在相同的列上打印带有键的字典?
How to print a dictionary with keys on identical columns each time?
我试图在不同的行上打印多个字典,它们包含相同的键,但每次都包含不同的值。这些值可能会有所不同,每次打印字典时,它都会显得很乱;因为钥匙每次都在不同的地方。例如:
{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}
每次打印字典时,如何以键位于同一列的方式打印字典?这样,每次字典的长度都相等,因此看起来更整洁。
一种方法是学习 data-frame 接口,例如 PANDAS,这样您就可以将值放入带标签的列中。这可能是最好的方法。
如果您需要使用自己的代码在 Python 中执行此操作,我建议您编写一个 pretty-printer 将每个元素按顺序排列,并将其打印在格式良好的列中(例如,以 \t 字符开头),并通过蛮力添加大括号。例如:
print '{',
for key in range(key_min, key_max+1):
print key, ':', dict[key], ',\t',
print '}'
那是一排。这令人满意吗?您也可以对整行使用 formatted print;我不确定你想花多少时间学习输出格式。
由于dict
本质上是un-ordered,您无法打印订购的内容。为了实现这一点,您可以根据键对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}
]
我试图在不同的行上打印多个字典,它们包含相同的键,但每次都包含不同的值。这些值可能会有所不同,每次打印字典时,它都会显得很乱;因为钥匙每次都在不同的地方。例如:
{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}
每次打印字典时,如何以键位于同一列的方式打印字典?这样,每次字典的长度都相等,因此看起来更整洁。
一种方法是学习 data-frame 接口,例如 PANDAS,这样您就可以将值放入带标签的列中。这可能是最好的方法。
如果您需要使用自己的代码在 Python 中执行此操作,我建议您编写一个 pretty-printer 将每个元素按顺序排列,并将其打印在格式良好的列中(例如,以 \t 字符开头),并通过蛮力添加大括号。例如:
print '{',
for key in range(key_min, key_max+1):
print key, ':', dict[key], ',\t',
print '}'
那是一排。这令人满意吗?您也可以对整行使用 formatted print;我不确定你想花多少时间学习输出格式。
由于dict
本质上是un-ordered,您无法打印订购的内容。为了实现这一点,您可以根据键对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}
]