从字典/lis按行顺序打印值

2024-10-03 09:21:42 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能告诉我如何按行顺序(从第二行开始)从字典中获取值吗?例如,从所有行获取第一个值,当行结束时,继续从所有行获取第二个值,直到收集完所有值(当没有更多列时)。你知道吗

这里有一张桌子:

('E', 'K', 'Y') # <- don't get the values from the first row
('B', 'C', 'B') # start getting values from this (second row)
('C', 'B', 'F')
('F', 'C', 'A')
('C', 'C', 'C')
('B', 'C', 'B')
('E', 'B', 'F')
('B', 'B', 'F')
('D', 'A', 'A')  
('A', 'D', 'F')  

上表应打印以下值:

BCFCBEBDACBCCCBBADBFACBFFAF  

创建编码和解码器程序。以正确的顺序打印值。你知道吗

谢谢。你知道吗


Tags: thefromget字典顺序thisstartrow
3条回答

另一种方式是获取字符列表而不是str:

print([v for r in (row for row in zip(*l[1:])) for v in r])  
#['B', 'C', 'F', 'C', 'B', 'E', 'B', 'D', 'A', 'C', 'B', 'C', 'C', 'C', 'B', 'B', 'A', 'D', 'B', 'F', 'A', 'C', 'B', 'F', 'F', 'A', 'F']

如果列表中有所有元组,则可以使用zipjoin

>>> l=[('E', 'K', 'Y') ,('B', 'C', 'B') ,('C', 'B', 'F'),('F', 'C', 'A'),('C', 'C', 'C'),('B', 'C', 'B'),('E', 'B', 'F'),('B', 'B', 'F'),('D', 'A', 'A')]
>>> ''.join([''.join(i) for i in zip(*l[1:])])
'BCFCBEBDCBCCCBBABFACBFFA'

如果数据结构是元组列表,则表示:

l =[('C', 'B', 'F'),
    ('F', 'C', 'A'),
    ('C', 'C', 'C'),
    ('B', 'C', 'B'),
    ('E', 'B', 'F'),
    ('B', 'B', 'F'),
    ('D', 'A', 'A'), 
    ('A', 'D', 'F')]

这样的方法可以解决问题:

string = ""
for i in range(3):
    for element in range(1, len(l)):
        string+=l[element][i]

相关问题 更多 >