我有以下形式的元组列表:
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多个不同的第一元素。
答案 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个列表转换为列表列表。