python - 将字符串拆分为内部列表而不影响关系
问题描述
我有一个列表列表,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!
解决方案
作为您的初始列表,包含 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']]]
推荐阅读
- javascript - 使用 Jest 和 Enzyme,如何测试通过 props 传入的函数?
- javascript - 将 Python 字符串列表导入 Javascript 脚本(HTML 文件)
- python - 有没有更好的方法来覆盖 Marshmallow.fields.List?
- redirect - 登录站点 intead Admin/cmsadministration.aspx 后如何重定向到 kentico 的主页?
- javascript - JavaScript:以功能方式重新组织画布渲染
- java - 映射和数组列表,如果索引为 getEntry() 为 null,则添加“0”
- sql - 如何在 BIG QUERY 中仅选择增量记录
- .net-core - JWT 令牌在 dotnet core 2.1 中返回失败
- angular - Firebase / Recaptcha / Ionic / Angular - 无法分配给对象'[object Object]'的只读属性'taskData'
- sql-server - 如何过滤嵌套查询中的记录,然后从过滤结果中选择同一表中的其他列?