假设我有这样一个列表:
[['John', 1], ['Fred', 1], ['Carolyn', 1], ['Kenneth', 3], ['Ronald', 3], ['Dorothy', 2], ['Joyce', 2], ['Julia', 3], ['Deborah', 1], ['Jonathan', 2], ['Aaron', 2], ['Marie', 1], ['Adam', 2], ['Kevin', 2], ['Alice', 2], ['Jerry', 1], ['Kimberly', 1], ['Lawrence', 1], ['Louis', 2], ['Anthony', 1], ['Carolyn', 3], ['Edward', 2], ['Samuel', 3], ['Rachel', 1], ['Kathleen', 1], ['Fred', 3], ['Fred', 3], ['Gerald', 2], ['Donna', 2], ['Keith', 3], ['Matthew', 3], ['Stephanie', 1]]
如何获得此输出:
John Dorothy Kenneth
Fred Joyce Ronald
Carolyn Jonathan Julia
Deborah Aaron Carolyn
Marie Adam Samuel
Jerry Kevin Fred
Kimberly Alice Fred
Lawrence Louis Keith
Anthony Edward Matthew
我要做的是把三个元素分组。如果一个组不是由3个名称组成的,则不会显示该组。你知道吗
另一个例子:
输入:
[['Heather', 2], ['Evelyn', 1], ['Norma', 1], ['Evelyn', 3], ['Harry', 3], ['Sean', 1], ['Anna', 1], ['Jerry', 3], ['Anna', 3], ['Julia', 1], ['Dorothy', 2]]
预期产量:
Evelyn Heather Evelyn
Norma Dorothy Harry
到目前为止,我只根据每个数字(1、2、3)将他们的名字分组到子列表中。你知道吗
r = [[] for i in range(3)]
for i in l:
if i[1] == 1:
r[0].append(i[0])
elif i[1] == 2:
r[1].append(i[0])
elif i[1] == 3:
r[2].append(i[0])
print r
r = [['John', 'Fred', 'Carolyn', 'Deborah', 'Marie', 'Jerry', 'Kimberly', 'Lawrence', 'Anthony', 'Rachel', 'Kathleen', 'Stephanie'], ['Dorothy', 'Joyce', 'Jonathan', 'Aaron', 'Adam', 'Kevin', 'Alice', 'Louis', 'Edward', 'Gerald', 'Donna'], ['Kenneth', 'Ronald', 'Julia', 'Carolyn', 'Samuel', 'Fred', 'Fred', 'Keith', 'Matthew']]
下面是一个类似于this问题的方法:
输出\u l1:
输出l2:
怎么样:
然后你就可以通过以下操作打印出元素:
打印输出:
您可以使用
zip
和itertools.groupby
的组合非常简洁地实现这一点。首先,按数字对列表排序,然后分组和压缩。如果需要字符串,则可以加入:输出:
相关问题 更多 >
编程相关推荐