Python 根据实例将列表拆分为较小的列表
我有一个元组列表:Python 根据实例将列表拆分为较小的列表,python,python-3.x,Python,Python 3.x,我有一个元组列表: list = [('A',2),('A',1),('B',3),('A',4),('B',5),('A',1)] 我想要两个列表,一个包含第一个元素“A”的所有元组,另一个包含第一个元素“B”的元组 listA = [('A',2),('A',1),('A',4),('A',1)] listB = [('B',3),('B',5)] 有什么想法吗?非常感谢。 编辑:请注意,上面的列表只是一个示例,我的实际列表要长得多,并且有100多个不同的第一个元素。列表理解将实现
list = [('A',2),('A',1),('B',3),('A',4),('B',5),('A',1)]
我想要两个列表,一个包含第一个元素“A”的所有元组,另一个包含第一个元素“B”的元组
listA = [('A',2),('A',1),('A',4),('A',1)]
listB = [('B',3),('B',5)]
有什么想法吗?非常感谢。
编辑:请注意,上面的列表只是一个示例,我的实际列表要长得多,并且有100多个不同的第一个元素。列表理解将实现以下目的:
listA = [x for x in list if x[0] == 'A']
listB = [x for x in list if x[0] == 'B']
此外,命名变量
列表通常是一个坏主意,因为它会覆盖内置变量。最简单且可读的方法是使用:
你可以试试下面的解决方案,希望这能解决你的问题
ls= [('A',2),('A',1),('B',3),('A',4),('B',5),('A',1)]
key = [i[0] for i in ls]
temp = []
for i in ls:
temp2 = []
for j in key:
if i[0] == j:
temp2.append(i)
temp.append(temp2)
上述代码的输出为:
[[('A', 2)], [('A', 1)], [('B', 3)], [('A', 4)], [('B', 5)], [('A', 1)]]
列表将根据元组键将1列表转换为列表列表。您尝试过什么吗?可能是一个简单的for-loop版本?我可以做一个循环,但我的实际列表有100多个不同的第一个元素,所以我不确定如何进行,这只是我的示例,我认为我的实际列表对于列表理解来说太长了,因为我有100多个不同的第一个元素
[[('A', 2)], [('A', 1)], [('B', 3)], [('A', 4)], [('B', 5)], [('A', 1)]]