【问题标题】:How to combine every two values in a nested list using Python?如何使用 Python 组合嵌套列表中的每两个值?
【发布时间】:2019-11-04 20:34:07
【问题描述】:
nested_lst = [['AAA, CEO','BBB, Global Head','CCC, Regional Manager','DDD, Analyst','People also report to CCC','XXX, Analyst','VVV, Analyst'],
['AAA, CEO','BBB, Global Head','EEE, Regional Manager','FFF, Analyst','People also report to EEE','SSS, Analyst','LLL, Analyst'],
['AAA, CEO','BBB, Global Head','PPP, Regional Manager','MMM, Manager','People report to MMM','GGG, Associate','People also report to EEE','ZZZ, Junior Analyst','UUU, Contractor']]

大家好, 我有一个上面显示的嵌套列表,我想组合该嵌套列表中的每两个元素。期望的输出是:

[['AAA, CEO & BBB, Global Head','BBB, Global Head & CCC, Regional Manager','CCC, Regional Manager & DDD, Analyst','DDD, Analyst & People also report to CCC',...],
['AAA, CEO & BBB, Global Head','BBB, Global Head & EEE, Regional Manager','EEE, Regional Manager & FFF, Analyst',...],
['AAA, CEO & BBB, Global Head','BBB, Global Head & PPP, Regional Manager',...]]

我尝试了[' & '.join(x) for x in zip(nested_lst[2][0::2], nested_lst[2][1::2]) ],但它不适用于嵌套列表并且没有组合元素。

谁能帮我解答这个问题?感谢您的帮助!

【问题讨论】:

    标签: python list list-comprehension nested-lists


    【解决方案1】:

    你可以使用itertools.pairwise配方:

    result = [list(map(' & '.join, pairwise(l))) for l in nested_lst]
    

    或者没有 itertools:

    result = [list(map(' & '.join, zip(l, l[1:]))) for l in nested_lst]
    

    结果:

    [['AAA, CEO & BBB, Global Head', 'CCC, Regional Manager & DDD, Analyst', 'People also report to CCC & XXX, Analyst', 'VVV,Analyst'], ['AAA, CEO & BBB, Global Head', 'EEE, Regional Manager & FFF, Analyst', 'People also report to EEE & SSS, Analyst', 'LLL, Analyst'], ['AAA, CEO & BBB, Global Head', 'PPP, Regional Manager & MMM, Manager', 'People report to MMM & GGG, Associate', 'People also report to EEE & ZZZ, Junior Analyst', 'UUU, Contractor']]
    

    【讨论】:

    • 谢谢贾布。 itertools.pairwise 看起来很棒!
    【解决方案2】:

    您的列表组合已接近。它需要一个嵌套循环和一些更改。

    list_comp:

    [[f'{x} & {y}' for x, y in zip(lst, lst[1:])] for lst in nested_lst]
    
    >>> output
    
    
    
    [['AAA, CEO & BBB, Global Head',
     'BBB, Global Head & CCC, Regional Manager',
      'CCC, Regional Manager & DDD, Analyst',
      'DDD, Analyst & People also report to CCC',
      'People also report to CCC & XXX, Analyst',
      'XXX, Analyst & VVV, Analyst'],
     ['AAA, CEO & BBB, Global Head',
      'BBB, Global Head & EEE, Regional Manager',
      'EEE, Regional Manager & FFF, Analyst',
      'FFF, Analyst & People also report to EEE',
      'People also report to EEE & SSS, Analyst',
      'SSS, Analyst & LLL, Analyst'],
     ['AAA, CEO & BBB, Global Head',
      'BBB, Global Head & PPP, Regional Manager',
      'PPP, Regional Manager & MMM, Manager',
      'MMM, Manager & People report to MMM',
      'People report to MMM & GGG, Associate',
      'GGG, Associate & People also report to EEE',
      'People also report to EEE & ZZZ, Junior Analyst',
      'ZZZ, Junior Analyst & UUU, Contractor']]
    

    【讨论】:

    • 谢谢你,布赖恩。您的回答非常有帮助!
    猜你喜欢
    • 2018-11-17
    • 2012-08-31
    • 2020-05-17
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多