我有以下示例:
tuples = [[('2018','Q1','Dept1'),('2018','Q2','Dept2')],[('2018','Q1','Dept1'),('2018','Q1','Dept2')],[('2018','Q2','Dept1'),('2018','Q2','Dept2')]]
因此,元组中的每个项目都是一个包含2个元素的列表,每个元素都是3个元素的元组。
我想生成一个最终列表newlist
,该列表根据每个列表中每个元组的前2个值相等进行过滤
所以,在这个示例中,我希望newlist
看起来像:
[[('2018', 'Q1', 'Dept1'), ('2018', 'Q1', 'Dept2')],
[('2018', 'Q2', 'Dept1'), ('2018', 'Q2', 'Dept2')]]
这是一个简化的示例,而tuples
的实际大小可能更大
答案 0 :(得分:2)
尝试以下操作,迭代feature_div
,然后检查tuples
的第一个元素的前两个元素是否与第二个元素相同:
i
当然,您也可以使用>>> [i for i in tuples if i[0][:2]==i[1][:2]]
[[('2018', 'Q1', 'Dept1'), ('2018', 'Q1', 'Dept2')], [('2018', 'Q2', 'Dept1'), ('2018', 'Q2', 'Dept2')]]
>>>
:
filter
答案 1 :(得分:0)
我首先要根据前两个元素制作字典:
entries = {}
for tuple in tuples:
key = tuple[:2]
entries[key] = entries.get(key, []) + [tuple[2]]
然后您可以重新构建新列表
newlist = []
for entry, values in entries.items():
sublist = []
for val in values:
sublist.append(entries + (val,))
newlist.append(sublist)