我有一个元组列表,如下所示
entities = [('tmp', 'warm'), ('loc', 'blr'), ('cap', 'blr'), ('aps', 'yes'), ('date', '12-10-2018')]
我想存储那些具有相同秒值的元组。如您所见,元组('loc', 'blr')
和('cap', 'blr')
具有相同的第二个值。你知道吗
我想把这两个元组存储在一个列表中,供我参考。你知道吗
这是我试过的,但效果不尽如人意
duplicate = []
for i in range(len(entities)):
for j in range(1, len(entities)):
if entities[i][1] == entities[j][1]:
duplicate.append([entities[i][1], entities[j][1]])
break
但我得到所有元组,好像所有元组都有相同的第二个值。我怎样才能做到这一点?你知道吗
所需输出
('loc', 'blr'), ('cap', 'blr')
您可以通过以下方式将具有公共第二个元素的列表组合在一起:
如果性能有问题,请考虑使用^{} :
现在,如果您只想保留两个元组有一个公共第二个元素的情况,可以执行以下操作:
我提出了这个答案,这样您就可以将它扩展到第二位的
n
公共元素,因为您可能有2个以上的元素。你知道吗对于更常见的情况,可以使用dict对这些元组进行分组
具有相同第二个值的所有对将分组在不同的键下
可以使用O(nlogn)^{} (需要对输入列表进行预排序),但O(n)^{} 就足够了:
相关问题 更多 >
编程相关推荐