gpt4 book ai didi

python - 丢弃 python 成对列表中的元素

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:31 26 4
gpt4 key购买 nike

我已经四处寻找有关此问题的指示,但找不到任何指示。假设我有一个 Python 列表:

list = set([((3, 2), (2, 1)),
((3, 2), (3, 1)),
((3, 1), (2, 1)),
((2, 1), (1,3), (2, 3))])

我想细化这个列表,以便丢弃包含具有相同第一个元素的对的列表条目。因此,例如,上面列表的输出应该是

set([((3, 2), (2, 1)),
((3, 1), (2, 1))])

因为 ((3, 2), (3, 1))((2, 1), (1,3), (2, 3)) 是其中至少两个坐标对具有相同第一个条目的元素。有没有快速简便的方法来做到这一点?

就目前而言,我正在考虑做类似的事情

[x for x in list if ... ]

我通过修复 x[k][0] 遍历列表并比较每个 x[i][0] 和不同的 ix[k][0],然后遍历所有这样的 k。我觉得必须有更好的方法来做到这一点。希望我在这个问题上足够清楚,非常感谢您的帮助。

最佳答案

这可以通过简单的 set comprehension 轻松完成。和一个简单的功能:

def no_duplicates(x):
seen = set()
return not any(i in seen or seen.add(i) for i in x)

data = {((3, 2), (2, 1)),
((3, 2), (3, 1)),
((3, 1), (2, 1)),
((2, 1), (1,3), (2, 3))}

print({item for item in data if no_duplicates(first for first, _ in item)})

制作:

{((3, 2), (2, 1)), 
((3, 1), (2, 1))}

如果项目中每对的第一个元素是唯一的,我们就取每个项目。我们使用简单的 no_duplicates() 函数(从 this great answer 中提取)来执行此操作,它会按照锡 jar 上的说明进行操作。

关于python - 丢弃 python 成对列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com