<p>如果我正确理解了您的问题,那么您希望从一个元组列表中获取所有元组,这些元组对于元组的某个特定元素具有重复值,但是只希望保留那些对于元组的其他特定元素具有不同值的重复组?你知道吗</p>
<p>如果是这样的话,我很抱歉地说你没有很好地解释这一点,我提到这一点是因为对一个问题有一个清晰的理解,这样你就可以用几句话来解释它,这也是编写代码的第一步。你知道吗</p>
<p>示例数据:</p>
<pre class="lang-py prettyprint-override"><code>[('a', 1, 0), ('a', 2, 0), ('b', 1, 0), ('c', 1, 0), ('c', 1, 0)]
</code></pre>
<p>在本例中,假设您正在查看第1个(索引0)和第2个(索引1)元素,我希望您希望得到<code>[('a', 1, 0), ('a', 2, 0)]</code>。不包括带有<code>'b'</code>的元组是因为没有秒,不包括带有<code>'c'</code>的元组是因为有秒,但是它对于其他元素没有不同的值。你知道吗</p>
<p>第二个例子</p>
<pre class="lang-py prettyprint-override"><code>('d', 1, 0), ('d', 2, 0), ('d', 2, 1)]
</code></pre>
<p>这里显示了一些您没有提到的内容。它们应该包括在内,因为第一个元素对所有元素都是相同的,而第二个元素不是相同的,但是应该包括所有三个元素,还是只包括第二个元素的<code>2</code>元组中的一个(随机的,或者第一个)?我想你会想要所有的,因为它们符合你的前两个标准。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>from itertools import groupby
data = [('a', 1, 0), ('a', 2, 0), ('b', 1, 0), ('c', 1, 0), ('c', 1, 0)]
def my_filter(el1, el2, xs):
return [e for l in [list(g) for k, g in groupby(xs, lambda x: x[el1])]
for e in l if len(set([e[el2] for e in l])) > 1]
print(my_filter(0, 1, data))
</code></pre>