【发布时间】:2019-06-15 18:32:10
【问题描述】:
假设我有一个这样的列表:
[['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 个元素分组。如果一个组不是由 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']]
【问题讨论】:
-
你可以看到这个链接我认为它对你有帮助..stackoverflow.com/questions/5695208/…
标签: python python-2.7 list grouping element