使用列表拆分列表以获取较小的列表

hadesfv

如何使用预定义列表拆分列表,当我x从列表titles中找到一个元素时,我想将列表拆分成多个较小的列表(或词典)

titles=['a','c','g','final']

x=['a',3,4,2,'c','b','b1',2,'g','final',...]

预期产量

new_list=[['a',3,4,2],['c','b','b1',2],['g'],['final',...]]
# OR
my_dict={'a':[3,4,2],'c':['b','b1',2],'g':[],'final':[...]}

注意:标题中的元素在x中是唯一的(即,在中不会多次找到“ a” x

阿兹罗
  1. 您可以计算每个标题的索引:

    indexes = list(map(x.index, titles))
    # or indexes = [x.index(title) for title in titles]
    
  2. 然后zip indexesindexes[1:]这将使每个索引与下一个索引成对:

    z = zip(indexes, indexes[1:] + [None])
    print(list(z))  # [(0, 4), (4, 8), (8, 9), (9, None)]
    
  3. 然后使用它来拆分:

    • 要获得子列表的列表:

      resultlist = [x[fr:to] for fr, to in zip(indexes, indexes[1:] + [None])]
      # [['a', 3, 4, 2], ['c', 'b', 'b1', 2], ['g'], ['final', 'value']]
      
    • 要获取该命令:

      resultdict = {x[fr]: x[fr + 1:to] for fr, to in zip(indexes, indexes[1:] + [None])}
      # {'a': [3, 4, 2], 'c': ['b', 'b1', 2], 'g': [], 'final': ['value']}
      

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章