根据实例将列表拆分为较小的列表

时间:2019-01-24 16:46:10

标签: 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多个不同的第一元素。

3 个答案:

答案 0 :(得分:1)

列表理解将解决问题:

listA = [x for x in list if x[0] == 'A']
listB = [x for x in list if x[0] == 'B']

此外,命名变量list通常是一个坏主意,因为它会覆盖内置的list

答案 1 :(得分:0)

最简单易读的方法是使用list comprehension

listA = [t for t in list if t[0]=='A']

答案 2 :(得分:0)

您可以在“解决方案”下面尝试,希望这可以解决您的问题

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)]]

list将根据元组的键将您的1个列表转换为列表列表。