0

我有一个这样的清单

A =[ ( 1, 10, 3), (1, 2, 3), (1, 11, 3), (2, 6, 4), (2, 5, 4) ]

我需要列出一个像

B = [ ( 1, 2, 3), (2, 5, 4) ] 

条件是如果 A 的成员的第一个和第三个值等于另一个成员,则选择具有最小第二个值的成员。

在此示例中,A 的成员只有 5 人,并且属于两组,第一和第三成员相等。但就我而言,这个数字可能很高。我不知道如何用 python 2.7 做到这一点。

如果我得到一个对 pyodbc 没问题的查询,考虑到 A 的每个成员都是一条记录并且每个元组的成员是一列,它也很有帮助。

4

1 回答 1

1

备用:

from sys import maxint

A =[ ( 1, 10, 3), (1, 2, 3), (1, 11, 3), (2, 6, 4), (2, 5, 4) ]
results = {}
for x, y, z in A:
    key = (x, z)
    results[key] = min(y, results.get(key, maxint))

results = [(x, y, z) for (x, z), y in results.items()]

print results
于 2014-01-30T01:04:50.440 回答