我有一本这样的字典:
mapping = {
'a':['_________','_________','_________'],
'b':['---------','---------','---------'],
'c':['=========','=========','========='],
}
我需要打印第一行打印的值列表中的所有第一项,第二行的所有第二个值以及第三行的所有第三个值。像这样:
_________---------=========
_________---------=========
_________---------=========
所有项目的长度相同,且所有列表的项目数相同。
我有一个字母列表,它按正确的顺序获取键,我只是不确定如何打印值。我可以打印所有第一项:
counter = 0
for l in letters:
for value in mapping[l]:
print(value[counter],end="")
我如何创建上面的输出?
答案 0 :(得分:1)
您可以“转置”您的列表;列表中的列必须成为行。
按正确顺序列出您的列表后,zip()
function可以do the transposing for you:
right_order = (mapping[l] for l in letters)
transposed = zip(*right_order)
for column in transposed:
print(*(column), sep='')
演示:
>>> mapping = {
... 'a':['_________','_________','_________'],
... 'b':['---------','---------','---------'],
... 'c':['=========','=========','========='],
... }
>>> letters = 'abc'
>>> right_order = (mapping[l] for l in letters)
>>> transposed = zip(*right_order)
>>> for column in transposed:
... print(*(column), sep='')
...
_________---------=========
_________---------=========
_________---------=========
另一种方法是使用一个行计数器,使用一个外部循环而不是其中一个列表中的元素数量:
for rownum in range(len(mapping['a'])):
for l in letters:
print(mapping[l][rownum], end='')
print()
答案 1 :(得分:0)
你必须确保你对字典进行排序,然后迭代它并打印东西。
length = len(d['a'])
for i in range(length):
for key in sorted(d.keys()):
print(d[key][i], end = '')
print()