繁体   English   中英

如何在每个子列表的索引[0]处拆分字符串,并将每个拆分索引放在它自己的原始列表中?

[英]How to split string at index[0] of each sublist, and have each split index in it's own original list?

如何将所有子列表的索引0处的字符串拆分为单独的元素,并将每个拆分元素包含在原始子列表的副本中?

例如:

Original_List = [['a,b','c','d','e','f'],['1','2','3'],['z,y','1','2']]

期望的结果:

Desired_List = [['a','c','d','e','f'],['b','c','d','e','f'],['1','2','3'],['z','1','2'],['y','1','2']]

此外,为了进一步明确一个更实际的例子:

Original_List = [['Contract_ID1,Contract_ID2','Amount','Date'],['Contract_ID3,Contract_ID4','400','Jan1']]

我希望每个子列表只有一个Contract_ID,但仍然具有与之关联的金额和日期

Desired_List =  [['Contract_ID1','Amount','Date'],['Contract_ID2','Amount','Date'],['Contract_ID3','400','Jan1'],['Contract_ID4','400','Jan1']]

我可以用下面的方法拆分所有子列表的索引0处的所有字符串,但我无法弄清楚如何为每个拆分元素复制整个列表,然后替换用split元素拆分的字符串,以便每个拆分element有自己的列表。

Split_First_Indices_of_Sublists = map(lambda x: x[0].split(","),Original_List)
>>[['a', 'b'], ['1'], ['z', 'y']]
for x in Original_List:
     x.pop(0)
>> [['c', 'd', 'e', 'f'], ['2', '3'], ['1', 2]]

我认为它最清楚地写成显式循环:

Desired_List = []

for li in Original_List:
    for spl in li[0].split(','):
        Desired_List.append([spl] + li[1:])

得到:

Desired_List
Out[153]: 
[['a', 'c', 'd', 'e', 'f'],
 ['b', 'c', 'd', 'e', 'f'],
 ['1', '2', '3'],
 ['z', '1', '2'],
 ['y', '1', '2']]

当然,您可以立即将其转换为等效的单行列表comp:

[[spl] + li[1:] for li in Original_List for spl in li[0].split(',')]

根据读者的不同,哪些可能或不具有可读性:-)

最后一点,请确保这是您真正想要的数据结构。 Contract_ID键入的dict似乎是您最终产品的非常自然的结构。

Original_List=[['a,b','c','d','e','f'],['1','2','3'],['z,y','1','2']]
desired_list=[]
for p in pl:
    try:
        splited=p.split(',')
        if not type(splited) is list:
            splited=[splited]
        if count(splited)>1:
            for list in splited:
                p[0]=list
                desired_list.append(p)
        else:
            desired_list.append()
    except:
        pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM