【问题标题】:How do you rearrange a list of lists where the first element holds multiple values and creates a new list of lists while repeating the first element?如何重新排列第一个元素包含多个值的列表列表,并在重复第一个元素的同时创建一个新的列表列表?
【发布时间】:2020-09-07 14:12:47
【问题描述】:

给定一个列表列表:

list_format = [['a', 'c', 'f', 'b'], ['j', 'l', 'o', 'c'], ['q', 's', 'v', 'e']]


'c', 'f', 'b' 必须映射到 'a'
'l', 'o', 'c' 必须映射到 'j'
's', 'v', 'e' 必须映射到 'q'

输出应如下所示:

[['a','c'],['a','f'],['a','b'],['j','l'],['j','o'],['j','c'],['q','s'],['q','v'],['q','e']]

到目前为止我已经尝试过:

list_dict = {element[0]:element[1:] for element in list_format}
newer_lst = []

for key, value in list_dict.items():
    newer_lst.append((key, value))

newer_lst


给我元组的输出:

[('a', ['c', 'f', 'b']), ('j', ['l', 'o', 'c']), ('q', ['s', 'v', 'e'])]

我在这方面比较新,正在尝试重新安排,任何建议都会很棒,被困了好几天,反复试验(无数次搜索谷歌并不断谷歌搜索。我觉得我已经接近但似乎无法放在一起。

【问题讨论】:

    标签: python-3.x list loops dictionary mapping


    【解决方案1】:

    这是一个单行,使用切片:

    [[i[0],j] for i in list_format for j in i[1:]]
    

    给予:

    [['a', 'c'], ['a', 'f'], ['a', 'b'], ['j', 'l'], ['j', 'o'], ['j', 'c'], ['q', 's'], ['q', 'v'], ['q', 'e']]
    

    另外,如果你遍历你的 value 变量,你会得到你的结果:

    list_dict = {element[0]:element[1:] for element in list_format}
    newer_lst = []
    
    for key, value in list_dict.items():
        for i in value:
            newer_lst.append((key, i))
    
    print(newer_lst)
    

    【讨论】:

      【解决方案2】:

      您不需要创建循环,只需在子数组上循环并即时将新子数组附加到主输出数组,例如 new_list.append([lst[0], item])

      new_list = []
      for lst in list_format: 
          for item in lst[1:]: 
              new_list.append([lst[0], item]) 
      print(new_list)
      #output                                                                                                                     
      #[['a', 'c'], ['a', 'f'], ['a', 'b'], ['j', 'l'], ['j', 'o'], ['j', 'c'], ['q', 's'], ['q', 'v'], ['q', 'e']]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-19
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多