[英]Iterate over unique pairs in zipped list
我有一个列表,如下所示:
lst = [['A', 2001, ...], ['A', 2001, ...], ['B', 2001, ...], ['A', 2002, ...], ['C', 2002, ...], ...]
我想迭代每个内部列表的前两个元素之间的压缩列表的组合,不包括重复项。
我可以执行以下操作,但不排除重复项。
letters = [item[0] for item in lst]
years = [item[1] for item in lst]
for letter, year in zipped(letters, years):
在此示例中,我希望迭代的对将是:
'A': 2001
'B': 2001
'A': 2002
'C': 2002
(注意排除额外'A':2001
对)
我觉得我尝试的代码比它需要的更复杂。 非常感谢任何想法。
使用set
删除重复项:
for letter, year in set(zipped(letters, years)):
...
使用groupby
并忽略子迭代器。
from itertools import groupby
def f(x):
return x[:2]
for (letter, number), _ in groupby(sorted(lst, key=f), f):
print(letter, number)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.