2024-10-16 20:40:15 发布
网友
如果我有这个内容的列表
[MNA1 MNA3 MNA3_1 MNA3_2 MNA2 MPA3_3 MPA3_2 MPA3_1 MPA3 MPB]
如何在一个组中获取前四个字符相同的所有值 示例
MPA3_3 MPA3_2 MPA3_1 MPA3
必须在一个组(列表)或任何其他东西中
这里有一种方法可以将您的项目分组在一起
l = [ 'MNA1', 'MNA3', 'MNA3_1', 'MNA3_2', 'MNA2', 'MPA3_3', 'MPA3_2', 'MPA3_1', 'MPA3', 'MPB' ] new_dict = {} for item in ls: key = item[0:4] if key in new_dict.keys(): new_dict[key].append(item) else: new_dict[key] = [item] print(new_dict)
输出:
{'MNA1': ['MNA1'], 'MNA2': ['MNA2'], 'MNA3': ['MNA3', 'MNA3_1', 'MNA3_2'], 'MPA3': ['MPA3_3', 'MPA3_2', 'MPA3_1', 'MPA3'], 'MPB': ['MPB']}
你可以用groupby
groupby
In [13]: for g,l in groupby(lst,key=lambda x:x.split('_')[0]): ...: temp = list(l) ...: if len(temp) == 4: ...: print temp ...: ['MPA3_3', 'MPA3_2', 'MPA3_1', 'MPA3']
假设你有弦
l = [ 'MNA1', 'MNA3', 'MNA3_1', 'MNA3_2', 'MNA2', 'MPA3_3', 'MPA3_2', 'MPA3_1', 'MPA3', 'MPB' ]
你能做到的
values = set([elem[:4] for elem in l]) newlist = [[elem for elem in l if elem[:4]==x] for x in values]
或者作为一个整体:
newlist = [[elem for elem in l if elem[:4]==x] for x in set([elem[:4] for elem in l])]
新列表如下所示:
[['MNA1'], ['MNA3', 'MNA3_1', 'MNA3_2'], ['MPA3_3', 'MPA3_2', 'MPA3_1', 'MPA3'], ['MPB'], ['MNA2']]
这里有一种方法可以将您的项目分组在一起
输出:
你可以用
groupby
假设你有弦
你能做到的
或者作为一个整体:
新列表如下所示:
相关问题 更多 >
编程相关推荐