Python将列表元素按值分组为元组
我有以下清单:Python将列表元素按值分组为元组,python,list,tuples,grouping,Python,List,Tuples,Grouping,我有以下清单: mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '
mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
显然,元素“*”在列表中分隔组。如何将元素出现在“*”之间进行分组?预期结果如下所示:
expected_list = [('Drama', 'Film Noir', 'Mystery', 'Romance'), ('Dance', 'Drama', 'Musical'), ('Crime', 'Drama'), ('Action', 'Drama', 'Period', 'Western'), ('Adaptation', 'Based-on', 'Comedy', 'Romance'), ('Mystery', 'Thriller'), ('Comedy')]
用于根据条目是否为*对条目进行分组,然后使用_ne_____不相等方法或等效的lambda表达式保留不为*的部分:
>>> import itertools
>>> mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
>>> [tuple(g) for k, g in itertools.groupby(mylist, key="*".__ne__) if k]
[('Drama', 'Film Noir', 'Mystery', 'Romance'),
('Dance', 'Drama', 'Musical'),
('Crime', 'Drama'),
('Action', 'Drama', 'Period', 'Western'),
('Adaptation', 'Based-on', 'Comedy', 'Romance'),
('Mystery', 'Thriller'),
('Comedy',)]
用于根据条目是否为*对条目进行分组,然后使用_ne_____不相等方法或等效的lambda表达式保留不为*的部分:
>>> import itertools
>>> mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
>>> [tuple(g) for k, g in itertools.groupby(mylist, key="*".__ne__) if k]
[('Drama', 'Film Noir', 'Mystery', 'Romance'),
('Dance', 'Drama', 'Musical'),
('Crime', 'Drama'),
('Action', 'Drama', 'Period', 'Western'),
('Adaptation', 'Based-on', 'Comedy', 'Romance'),
('Mystery', 'Thriller'),
('Comedy',)]
这是一个经典:
将您的输入分组为*和非-*,删除*组,并将非*组分组。这是一个经典:
将您的输入分组为*和非-*,删除*组,并对非-*组进行元组设置