Python 在垂直列中打印字典旋转结果
我有这本字典:Python 在垂直列中打印字典旋转结果,python,dictionary,Python,Dictionary,我有这本字典: dict1 = {'Name': ['Mary','Bob'],'Surname': ['White','Red']} 如果我进行打印,我有以下输出: 姓怀特 红色 叫玛丽 上下快速移动 但是我想要这个输出 姓名 玛丽·怀特 鲍勃·瑞德 如果不使用pandas,我该怎么做呢?下面的代码将对dict的键进行排序(这样,对于相同的数据,您每次都会得到相同的结果),并以您提供的格式打印dict,其中包含任意数量的键和dict值 dict1 = {'Name': ['Mary','
dict1 = {'Name': ['Mary','Bob'],'Surname': ['White','Red']}
如果我进行打印,我有以下输出:
姓怀特
红色
叫玛丽
上下快速移动
但是我想要这个输出
姓名
玛丽·怀特
鲍勃·瑞德
如果不使用pandas,我该怎么做呢?下面的代码将对dict的键进行排序(这样,对于相同的数据,您每次都会得到相同的结果),并以您提供的格式打印dict,其中包含任意数量的键和dict值
dict1 = {'Name': ['Mary','Bob'],'Surname': ['White','Red']}
sorted_keys = sorted(dict1.keys())
spacing = 10
print_sheme = ('{:<' + str(spacing) + '}')*len(list(dict1.values())[0])
print(print_sheme.format(*sorted_keys))
for i in range(len(list(dict1.values())[0])):
values_to_print = [dict1[key][i] for key in sorted_keys]
print(print_sheme.format(*values_to_print))
下面的代码将对dict的键进行排序(以便每次都能得到相同的数据),并以dict中任意数量的键和值提供的格式打印dict
dict1 = {'Name': ['Mary','Bob'],'Surname': ['White','Red']}
sorted_keys = sorted(dict1.keys())
spacing = 10
print_sheme = ('{:<' + str(spacing) + '}')*len(list(dict1.values())[0])
print(print_sheme.format(*sorted_keys))
for i in range(len(list(dict1.values())[0])):
values_to_print = [dict1[key][i] for key in sorted_keys]
print(print_sheme.format(*values_to_print))
这是一个非常简单的实现,可以处理任意键、不均匀列表和动态大小的列:
def column_print(d, spacing=2):
columns = [[x] + y for x, y in zip(d.keys(), d.values())]
col_widths = [spacing + max([len(x) for x in e]) for e in columns]
for i in range(max([len(x) for x in columns])):
for w, col in zip(col_widths, columns):
print((col[i] if i < len(col) else "").ljust(w), end="")
print()
column_print({'Name': ['Mary','Bob','Mark'], 'Surname': ['White','Red','Blue','Black'], 'MI': ['S','A']})
这是一个非常简单的实现,可以处理任意键、不均匀列表和动态大小的列:
def column_print(d, spacing=2):
columns = [[x] + y for x, y in zip(d.keys(), d.values())]
col_widths = [spacing + max([len(x) for x in e]) for e in columns]
for i in range(max([len(x) for x in columns])):
for w, col in zip(col_widths, columns):
print((col[i] if i < len(col) else "").ljust(w), end="")
print()
column_print({'Name': ['Mary','Bob','Mark'], 'Surname': ['White','Red','Blue','Black'], 'MI': ['S','A']})
答案不那么笼统,但要简短得多。只需迭代两个列表(但您可以将其扩展为需要同时引用的列表数量):
一个不太笼统但简短得多的答案。只需迭代两个列表(但您可以将其扩展为需要同时引用的列表数量):