如何用管道连接子列表的元素?

时间:2019-05-17 17:04:45

标签: python

我有以下表格的列表:

names = [['123, jack',['jack johnson, jack richards, jack michaels']],['325, nick',['nick thompson, nick jacobs, nick smith']],....]

,每个通用名都有一个与之关联的ID,而该元素的子列表包含每个以通用名开头的全名。

我想更改包含全名的子列表的每个元素,并用管道替换逗号,以便给出以下形式的列表:

names = [['123, jack',['jack johnson| jack richards| jack michaels']],['325, nick',['nick thompson| nick jacobs| nick smith']],....]

是否有最佳方法来遍历列表并替换成这样?

1 个答案:

答案 0 :(得分:3)

您可以使用嵌套列表推导,并将str.joinstr.split结合使用以更改内部列表分隔符:

[i + ['| '.join(j)] for *i, j in names]

[['123, jack', 'jack johnson| jack richards| jack michaels'],
 ['325, nick', 'nick thompson| nick jacobs| nick smith']]

请注意,使用extended iterable unpacking可以在子列表之前使用任意数量的字符串。例如,使用另一个示例:

names = [['123, jack', 'MORE STRINGS', ['jack johnson', 'jack richards', 'jack michaels']],
         ['325, nick',['nick thompson', 'nick jacobs', 'nick smith']]]

[i + ['| '.join(j)] for *i, j in names]

[['123, jack', 'MORE STRINGS', 'jack johnson| jack richards| jack michaels'],
 ['325, nick', 'nick thompson| nick jacobs| nick smith']]