按n元素分组列表

2024-06-26 17:39:52 发布

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

我有一个2d列表,如下所示

original_list = [['2', 'Out', 'Words', 'Test3', '21702-1201', 'US', 41829.0, 'VN', 'Post', 'NAI'],
                 ['Test', 'Info', 'More Info', 'Stuff', '63123-7802', 'US', 40942.0, 'CM', 'User Info', 'VAI'],
                 ['Test1', 'Info1', 'More Info1', 'Stuff1', '63123-7802', 'US', 40942.0, 'CM', 'User Info1', 'VAI'],
                 ['1', 'Information', 'Things', 'NE', '68064-9782', 'US', 40106.0, 'DRH', 'Another User', 'NAI'],]

我已经按邮政编码把名单排序了。现在我想按邮政编码(第5个元素)拆分列表,并将邮政编码分组为相同的新列表。我还想按邮政编码的前5个数字对它们进行排序,忽略最后4个数字。我该怎么做?我尝试使用zip函数,但无法将其分组。你知道吗

编辑:

所需的输出如下所示。你知道吗

new_list1 = ['2', 'Out', 'Words', 'Test3', '21702-1201', 'US', 41829.0, 'VN', 'Post', 'NAI']
new_list2 = ['Test', 'Info', 'More Info', 'Stuff', '63123-7802', 'US', 40942.0, 'CM', 'User Info', 'VAI'],
            ['Test1', 'Info1', 'More Info1', 'Stuff1', '63123-7802', 'US', 40942.0, 'CM', 'User Info1', 'VAI']
new_list3 = ['1', 'Information', 'Things', 'NE', '68064-9782', 'US', 40106.0, 'DRH', 'Another User', 'NAI']

关于问题的第二部分。如果我有两个列表,其中包括拉链前5个数字是相同的,但最后4个是不同的,它会把这些分组在一起。例如,如果上面的两个邮政编码是63123-7802和63123-8956,那么这些将被分组在一起。你知道吗


Tags: info列表newmorecm数字outus
1条回答
网友
1楼 · 发布于 2024-06-26 17:39:52

你可以使用^{}

>>> from itertools import groupby
>>> l = [['2', 'Out', 'Words', 'Test3', '21702-1201', 'US', 41829.0, 'VN', 'Post', 'NAI'],
...      ['Test', 'Info', 'More Info', 'Stuff', '63123-7802', 'US', 40942.0, 'CM', 'User Info', 'VAI'],
...      ['Test1', 'Info1', 'More Info1', 'Stuff1', '63123-7802', 'US', 40942.0, 'CM', 'User Info1', 'VAI'],
...      ['1', 'Information', 'Things', 'NE', '68064-9782', 'US', 40106.0, 'DRH', 'Another User', 'NAI'],]
>>> zip_retriever = lambda sub_l: sub_l[4].split('-')[0] # Grab the part leading up to '-' in the zip code
>>> for zip_code, vals in groupby(l, zip_retriever):
...     print zip_code, list(vals)
...     
21702 [['2', 'Out', 'Words', 'Test3', '21702-1201', 'US', 41829.0, 'VN', 'Post', 'NAI']]
63123 [['Test', 'Info', 'More Info', 'Stuff', '63123-7802', 'US', 40942.0, 'CM', 'User Info', 'VAI'], ['Test1', 'Info1', 'More Info1', 'Stuff1', '63123-7802', 'US', 40942.0, 'CM', 'User Info1', 'VAI']]
68064 [['1', 'Information', 'Things', 'NE', '68064-9782', 'US', 40106.0, 'DRH', 'Another User', 'NAI']]
>>> 

相关问题 更多 >