2013-08-12 1 views
0

나는 조건이 경우 첫 번째와 세 번째 값입니다선택 튜플 회원

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

같은 목록을 작성하기 위해 필요한이

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

같은 목록을 가지고 A의 멤버가 다른 멤버와 동일한 경우, 가장 작은 두 번째 값을 갖는 멤버를 선택합니다.

이 예제에서 A의 구성원은 5이고 첫 번째와 세 번째 구성원이 같은 두 개의 그룹입니다. 하지만 제 경우에는이 수치가 클 수도 있습니다. python 2.7에서이 작업을 수행하는 방법을 알 수 없습니다.

또한 A의 각 구성원이 레코드이고 각 튜플의 구성원이 열인 것을 고려하여 pyodbc와 관련된 쿼리를 얻으면 유용합니다.

+1

입니까? – woofmeow

+0

이 코드를 작성하는 방법이나 루프를 작성하는 방법을 알 수 없습니다. – user2437648

답변

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