首页 > 解决方案 > 将字符串拆分为内部列表而不影响关系

问题描述

我有一个列表列表,lol

[ ['filiabus', 'filia +N +Abl +Sg', 'filia +N +Dat +Sg'], 
  ['canēs', 'canis +N +Acc +Pl', 'canis +N +Abl +Pl'], ...] 

每个内部列表都有 3 个元素,所有这些元素当前都是字符串。我想要做的是用空格字符分割第二个和第三个项目来创建这样的东西:

[ 
['filiabus', ['filia', '+N', '+Abl', '+Sg'], ['filia', '+N', '+Dat', '+Sg'] ], 
...
] 

重要的是这些新的嵌套列表是具有第一项(例如filiabus)的同一列表的一部分。如果它更容易,第一个元素可以是一个单独的列表。

我觉得这样的事情应该有效

test=[]
for i in lol:
    for j in i:
        test.append([j[0],j[1].split(' '), j[2].split(' ')])

但它只会产生:

>>> test
[['f', ['i'], ['l']], ['f', ['i'], ['l']], ['f', ['i'], ['l']], ['c', ['a'], ['n']], ['c', ['a'], ['n']], ['c', ['a'], ['n']]]

Thanks!

标签: pythonlist

解决方案


作为您的初始列表,包含 3 个长度的列表,您可以直接将它们解压缩为 3 个变量,例如

 for name, v1, v2 in values:

然后,结果只是第一个值,另外 2 个都被拆分(在“连续空格”上没有分隔符拆分)

values = [['filiabus', 'filia +N +Abl +Sg', 'filia +N +Dat +Sg'],
          ['canēs', 'canis +N +Acc +Pl', 'canis +N +Abl +Pl']]

result = [[name, v1.split(), v2.split()] for name, v1, v2 in values]

print(result)  # [['filiabus', ['filia', '+N', '+Abl', '+Sg'], ['filia', '+N', '+Dat', '+Sg']], 
                # ['canēs', ['canis', '+N', '+Acc', '+Pl'], ['canis', '+N', '+Abl', '+Pl']]]

推荐阅读