Python 基于其他列表对值进行分组

Python 基于其他列表对值进行分组,python,Python,根据组名称对列表值进行分组: groups = ['a','b','c','a','b','b'] values = [1, 2, 3, 4, 5, 6] 输出文本文件应如下所示: a 1 4 b 2 5 6 c 3 您可以使用函数和dict.setdefault方法在字典中对值进行分组,然后将项目写入文件: >>> groups = ['a','b','c','a','b','b'] >>> values = [1, 2, 3, 4, 5, 6] &g

根据组名称对列表值进行分组:

groups = ['a','b','c','a','b','b']
values = [1, 2, 3, 4, 5, 6]
输出文本文件应如下所示:

a 1 4
b 2 5 6
c 3

您可以使用函数和
dict.setdefault
方法在字典中对值进行分组,然后将项目写入文件:

>>> groups = ['a','b','c','a','b','b']
>>> values = [1, 2, 3, 4, 5, 6]
>>> 
>>> d={}
>>> 
>>> for i,j in zip(groups,values):
...   d.setdefault(i,[]).append(j)
... 
>>> d
{'a': [1, 4], 'c': [3], 'b': [2, 5, 6]}



with open ('out.txt','w') as fo:
   for k,v in d.items():
        fo.write(k +'  '+ ' '.join(map(str,values)) + '\n')

zip
将它们放在一起,得到
(组,值)
元组的一个iterable,然后使用
itertools.groupby
>>> groups = ['a','b','c','a','b','b']
>>> values = [1, 2, 3, 4, 5, 6]
>>> 
>>> d={}
>>> 
>>> for i,j in zip(groups,values):
...   d.setdefault(i,[]).append(j)
... 
>>> d
{'a': [1, 4], 'c': [3], 'b': [2, 5, 6]}



with open ('out.txt','w') as fo:
   for k,v in d.items():
        fo.write(k +'  '+ ' '.join(map(str,values)) + '\n')