繁体   English   中英

迭代压缩列表中的唯一对

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM