如何使用合并的元素创建嵌套列表?

2024-05-15 03:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文


假设我有一个列表:

l = ['1 bd', '1 ba', '565 sqft', '- Apartment for rent', '2 bds', '1 ba', '1,200 sqft', '- Apartment for rent', 'None', '2 bds', '1 ba', '-- sqft', '- Apartment for rent', '1 bd', '1 ba', '382 sqft', '- Apartment for rent', 'None', '1 bd', '1 ba', '615 sqft', '- Apartment for rent', '1 bd', '1 ba', '478 sqft', '- Apartment for rent', '1 bd', '1 ba', '529 sqft', '- Apartment for rent']

如何制作嵌套列表,以便其中的不同列表可以由不同数量的合并元素组成


预期输出:

l = [['1 bd, 1 ba, 565 sqft, - Apartment for rent'], ['2 bds, 1 ba, 1,200 sqft, - Apartment for rent'], ['None'], ['2 bds, 1 ba, -- sqft, - Apartment for rent'], ['1 bd, 1 ba, 382 sqft, - Apartment for rent'], ['None'], ['1 bd, 1 ba, 615 sqft, - Apartment for rent'], ['1 bd, 1 ba, 478 sqft, - Apartment for rent'], ['1 bd, 1 ba, 529 sqft, - Apartment for rent']]


列表中的项目不必与上面的项目完全相同(逗号或连字符)。我的目标是以一种有意义的方式将它们组合在一起


Tags: 项目none元素目标列表for数量字符
1条回答
网友
1楼 · 发布于 2024-05-15 03:22:28

您可以使用itertools{}和groupby()来执行此操作。例如:

from itertools import accumulate, groupby

key = ['for rent' in e or e == 'None' for e in l]
[', '.join([v for k, v in g]) for _, g in groupby(zip(accumulate([0] + key), l), key=lambda gv: gv[0])]

给出:

['1 bd, 1 ba, 565 sqft, - Apartment for rent',
 '2 bds, 1 ba, 1,200 sqft, - Apartment for rent',
 'None',
 '2 bds, 1 ba,   sqft, - Apartment for rent',
 '1 bd, 1 ba, 382 sqft, - Apartment for rent',
 'None',
 '1 bd, 1 ba, 615 sqft, - Apartment for rent',
 '1 bd, 1 ba, 478 sqft, - Apartment for rent',
 '1 bd, 1 ba, 529 sqft, - Apartment for rent']

说明

我们制作一个key来检测“一个列表的结尾”:要么'for rent'在字符串中,要么字符串是'None'(当然,调整即席)

累积然后生成组(第一个列表为0,第二个列表为1,以此类推)

Groupby将流拆分为多个组。那么,这仅仅是一个连接正确位的问题

相关问题 更多 >

    热门问题