【问题标题】:Printing values in row order from dictionary/ list从字典/列表中按行顺序打印值
【发布时间】:2014-12-09 23:22:40
【问题描述】:

有人可以告诉我如何按行顺序(从第二行开始)从字典中获取值,例如从所有行中获取第一个值,当行完成时,继续从所有行中获取第二个值,直到收集到所有值(当没有更多列时)。

例如这是一张表:

('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  

创建一个编码和解码程序。坚持以正确的顺序打印值。

谢谢。

【问题讨论】:

  • 发布实际的数据结构。这里没有字典。

标签: python list dictionary encode


【解决方案1】:

如果列表中有所有元组,则可以使用 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'

【讨论】:

    【解决方案2】:

    另一种方式,获取字符列表而不是 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']
    

    【讨论】:

      【解决方案3】:

      如果数据结构是一个元组列表,意思是:

      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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多