在python中对两个列表进行分类并进行相应排列

在python中对两个列表进行分类并进行相应排列,python,Python,我正在处理两个列表,如下所示: list_a = [x,y,z,.....] list_b = [xa,xb,xc,xd,xe,ya,yb,yc,yd,za,zb,zc,zd,ze,zf] 我试图做到的是,在整理数据的同时制作更多列表,如下所示: list_x = [x,xa,xb,xc,xd,xe] list_y = [y,ya,yb,yc,yd] list_z = [z,za,zb,zc,zd,ze,zf] 现在,如果我使用如下循环: final_list=[] fo

我正在处理两个列表,如下所示:

list_a = [x,y,z,.....]  
list_b = [xa,xb,xc,xd,xe,ya,yb,yc,yd,za,zb,zc,zd,ze,zf]  
我试图做到的是,在整理数据的同时制作更多列表,如下所示:

list_x = [x,xa,xb,xc,xd,xe]  
list_y = [y,ya,yb,yc,yd]  
list_z = [z,za,zb,zc,zd,ze,zf]  
现在,如果我使用如下循环:

final_list=[]
for item in list_a:
    for value in list_b:
    if value[0] == item:
        print item, value
它过滤数据,但无法达到所需的格式。
请你们对此发表一些有价值的评论。
谢谢

您可以使用以下代码:

list_a = ['x','y','z']
list_b = ['xa','xb','xc','xd','xe','ya','yb','yc','yd','za','zb','zc','zd','ze','zf']
print [(key, [_ for _ in list_b if key == _[0]]) for key in list_a]
它提供了一个元组列表,第一个条目是单个字母,第二个条目是列表

或者不使用元组也可以这样做:

print [[key] + [_ for _ in list_b if key == _[0]] for key in list_a]
输出:

[['xa', 'xb', 'xc', 'xd', 'xe'], ['ya', 'yb', 'yc', 'yd'], ['za', 'zb', 'zc', 'zd', 'ze', 'zf']]
[('x', ['xa', 'xb', 'xc', 'xd', 'xe']), ('y', ['ya', 'yb', 'yc', 'yd']), ('z', ['za', 'zb', 'zc', 'zd', 'ze', 'zf'])]
或者更确切地说:

print [(y,[x for x in list_b if x.startswith(y)]) for y in list_a]
输出:

[['xa', 'xb', 'xc', 'xd', 'xe'], ['ya', 'yb', 'yc', 'yd'], ['za', 'zb', 'zc', 'zd', 'ze', 'zf']]
[('x', ['xa', 'xb', 'xc', 'xd', 'xe']), ('y', ['ya', 'yb', 'yc', 'yd']), ('z', ['za', 'zb', 'zc', 'zd', 'ze', 'zf'])]

不是100%关于这种格式,但是你可以使用列表列表

list_a = ["x","y","z"]  
list_b = ["xa","xb","xc","xd","xe","ya","yb","yc","yd","za","zb","zc","zd","ze","zf"]  
final_list = []
for item in list_a:
    item_list = [item]
    for value in list_b:
        if value[0] == item:
            item_list.append(value)
    final_list.append(item_list)
print final_list
它回来了
[['x','xa','xb','xc','xd','xe'],['y','ya','yb','yc','yd'],['z','za','zb','zc','zd','ze','zf']

您可以通过使用和遵循功能方法:

需要注意的是,如果
list_b
没有排序,则传递给
groupby()
的参数应该是
排序的(list_b)


作为补充说明,您可以通过简单地将可选参数
key=itemgetter(0)
更改为
key=lambda s:s:s[0]

来摆脱模块
操作符
,您尝试过如何格式化结果?正如我尝试使用嵌套循环一样,我得到的结果是:[x,xa][x,xb][x,xc][x,xd]等等。我不清楚如何根据
list\u a
append/extend
中的项目创建列表,以获得所需的格式。关于这方面的建议会很有帮助。读一本教程吧!不完全是他想要的,但也可以。谢谢你的回答。人们把所有特定的ans都放进去,我jst想要一个类似于我的数据的意见。这很有帮助,没问题。很高兴它有帮助!