python3.x根据lis中的公共元素动态地分组2d列表中的元素

2024-06-02 13:32:11 发布

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

[('20bgx6', 'HQ', 'Head Quarters'),
('2040bl', 'NVA', 'North Vietnamese Army '),
 ('2040bl', 'HEAT', 'High Explosive Anti Tank '),
 ('2040bl', 'HEAT', 'High Explosive Anti Tank '),
 ('202kon', 'HEAT', 'High Explosive Anti Tank '),
 ('202kon', 'EFP', 'Explosively Formed Penetrator/Projectile'),
 ('202kon', 'NCO', 'Non-commissioned officer'),
 ('202kon', 'MRAP', 'Mine Resistant Ambush Protected'),
 ('202kon', 'UXO', 'Unexploded Ordnance'),
 ('202kon', 'MP', 'Military Police'),
 ('202kon', 'CQ', 'Charge of Quarters'),
 ('202kon', 'HQ', 'Head Quarters'),
 ('202kon', 'NCO', 'Non-commissioned officer'),
 ('1zz081', 'BC', 'Battalion Commander'),
 ('1zz081', 'HMMWV', 'High Mobility Multi Wheeled Vehicle'),
 ('1zz081', 'SALUTE', 'Size Activity Location Uniform Time Equipment '),
 ('1zxpbs', 'NCO', 'Non-commissioned officer'),
 ('1ztrv6', 'SALUTE', 'Size Activity Location Uniform Time Equipment '),
 ('1ztrv6', 'HEAT', 'High Explosive Anti Tank '),
 ('1ztrv6', 'BDU', 'Battle Dress Uniform, predecessor to the ACU'),
 ('1zs9gz', 'AG', 'Adjutant General'),
 ('1zs9gz', 'HEAT', 'High Explosive Anti Tank ')]

我将有一个与之相等的列表,然后我需要对它们进行分组,以便所有以相同ID标记(2040bl、202kon等)开头的元素组将位于它们自己的子列表中。在

因此,以“2040bl”开头的子列表将在它们自己的组中结束,都在同一个列表中。结果列表的结果长度为7,因为有7个惟一的ID标记(每个子列表中的第一个元素)

我在python 3上


Tags: 列表uniformheadnonhighheattankhq
1条回答
网友
1楼 · 发布于 2024-06-02 13:32:11

您可以使用^{}方法。有了你的数据,它似乎可以开箱即用。例如:

from itertools import groupby
for k, v in groupby(l, key=lambda t: t[0])  # assuming your list is stored in l
    print('%s\n\t%s' % (k, list(v)))

将输出:

^{pr2}$

重要提示:当使用groupby时,需要按组键对数据进行排序,在您的示例中是这样的。否则,可以在分组之前添加sorted(l, key=lambda t:t[0])。在

相关问题 更多 >