f #에서 두 개의 서로 다른 형식의 시퀀스를 튜플에 결합하는 방법은 무엇입니까?

Nadamgm

저는 F #을 처음 접했고 대부분 C # 배경을 가지고 있습니다. 나는 동일한 것을 나타내지 만 다른 데이터 소스에서 두 개의 목록 / 시퀀스로 작업하고 있습니다 (하나는 로컬 파일이고 다른 하나는 온라인 시스템의 항목 그룹입니다.

두 데이터 세트 간의 불일치를보고해야합니다.

지금까지 다른 데이터 세트에서 불일치가없는 항목 만 포함하도록 두 목록을 필터링했습니다.

이제 차이점을 기록 할 수 있도록 속성 중 하나를 기반으로 튜플 (또는 실제로 다른 것)으로 쌍을 이루고 싶습니다.

지금까지 내가 시도한 것은 다음과 같습니다.

 let printDiff (offlinePackages: oP seq) (onLinePackages: onP seq) =
                                                                    Seq.map2(fun x y -> (x, y)) offlinePackages onLinePackages

이것은 내 데이터를 페어링하지만 일치하는 속성 값을 기반으로 페어링을 수행하려면 여전히 몇 가지 논리가 필요합니다. 다음과 같은 것을 찾고 있습니다.

if offLinePackage.Label = OnlinePackage.Label then /do the matchup/
else /don't do anything/

나는 여전히 내 객체 지향적 사고에 갇혀 있다는 것을 알고 있으며, 그것이 내가 묻는 이유이기도합니다.

미리 감사드립니다!

표도르 소이 킨

등가 함수를 기반으로 시퀀스 요소 일치-이를 "조인"이라고합니다.

조인을 수행하는 가장 "간단한"방법은 다음과 같이 데카르트 곱을 가져와 필터링하는 것입니다.

let matchup seq1 seq2 = 
    Seq.allPairs seq1 seq2
    |> Seq.filter (fun (x, y) -> x.someProp = y.someProp)

또는 계산 표현식 형식 :

let matchup seq1 seq2
    seq {
      for x in seq1 do
      for y in seq2 do
      if x.someProp = y.someProp then yield (x,y)
    }

그러나 이것은 약간 비효율적입니다. 가능한 모든 쌍을 반복하기 때문에 복잡성은 O (n * m)입니다. 목록이 짧으면 괜찮지 만 규모를 늘릴수록 물릴 것입니다.

이 작업을보다 효율적으로 수행하려면 해시 조인을 수행하는 query계산 빌더 및 해당 작업을 사용할 수 있습니다 join(즉, 먼저 해시 테이블을 빌드 한 다음이를 기반으로 요소를 일치시킵니다).

let matchup seq1 seq2 =
  query {
    for x in seq1 do
    join y in seq2 on (x.someProp = y.someProp)
    select (x,y)
  }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Rails에서이 두 개의 다른 has_manys를 하나로 병합하는 방법은 무엇입니까?

분류에서Dev

SQLite에서 두 개의 열을 다른 열로 결합하는 방법은 무엇입니까?

분류에서Dev

다른 창에서 두 개의 Sublime 인스턴스를 시작하는 방법은 무엇입니까?

분류에서Dev

다른 창에서 두 개의 Sublime 인스턴스를 시작하는 방법은 무엇입니까?

분류에서Dev

Pymongo에서 두 개의 다른 키로 문서에 액세스하는 방법은 무엇입니까?

분류에서Dev

두 개의 서로 다른 튜플 목록에서 튜플의 첫 번째 요소를 교차하는 방법

분류에서Dev

단일 POSIX 스레드에서 두 개의 서로 다른 대기 메커니즘을 결합하는 방법은 무엇입니까?

분류에서Dev

0과 n 사이에 2의 배수를 표시하기 위해 JavaScript에서 두 개의 다른 함수를 결합하는 방법은 무엇입니까?

분류에서Dev

SCDF에서 두 개의 다른 출력 채널로 메시지를 보내는 방법은 무엇입니까?

분류에서Dev

PHP에서 하나의 양식에서 두 개의 다른 버튼에 대해 서로 다른 작업을 연결하는 방법은 무엇입니까?

분류에서Dev

SAPUI5의 서로 다른 환경에서 두 개의 서로 다른 주소에 대한 리소스를 사용하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 텍스트 파일에서 값을 병합하는 방법은 무엇입니까?

분류에서Dev

.txt에서 두 개의 값을 두 개의 다른 파일로 분리하는 방법은 무엇입니까?

분류에서Dev

메서드는 튜플을 반환합니다. C #에서 튜플의 결과를 가져 오는 두 개의 변수를 할당하는 방법

분류에서Dev

카누에서 두 개의 다른 비트 맵 이미지를 표시하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 테이블에서 두 열의 MIN 및 MAX를 찾는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 호스트에서 실행되는 두 개의 컨테이너를 연결하는 방법은 무엇입니까?

분류에서Dev

MySQL에서 group by로 두 개의 다른 필드 수를 얻는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 .Java 파일에서 클래스를 처리하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 커밋에서 동일한 파일의 소스를 얻는 방법은 무엇입니까?

분류에서Dev

Keras에서 입력 크기가 다른 두 개의 LSTM 레이어를 결합하는 방법은 무엇입니까?

분류에서Dev

React에서 서로 다른 디스플레이로 두 개의 드롭 다운 목록을 동기화하는 방법은 무엇입니까?

분류에서Dev

서로 다른 두 개의 확인란에서 두 개의 숫자를 추가하는 GUI를 만드는 방법은 무엇입니까?

분류에서Dev

서로 다른 두 개의 확인란에서 두 개의 숫자를 추가하는 GUI를 만드는 방법은 무엇입니까?

분류에서Dev

CentOS에서 Nginx를 사용하여 두 개의 다른 포트로 두 개의 블록 서버 (IP 기반)를 설정하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 폴더를 한 폴더에서 리소스를 얻는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 서비스에서 데이터를받은 후 지시문에서 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 CRM 시스템에서 문제 티켓을 복사하는 프로세스를 자동화하는 방법은 무엇입니까?

분류에서Dev

QML에서 두 개의 scrollview를 연결하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Rails에서이 두 개의 다른 has_manys를 하나로 병합하는 방법은 무엇입니까?

  2. 2

    SQLite에서 두 개의 열을 다른 열로 결합하는 방법은 무엇입니까?

  3. 3

    다른 창에서 두 개의 Sublime 인스턴스를 시작하는 방법은 무엇입니까?

  4. 4

    다른 창에서 두 개의 Sublime 인스턴스를 시작하는 방법은 무엇입니까?

  5. 5

    Pymongo에서 두 개의 다른 키로 문서에 액세스하는 방법은 무엇입니까?

  6. 6

    두 개의 서로 다른 튜플 목록에서 튜플의 첫 번째 요소를 교차하는 방법

  7. 7

    단일 POSIX 스레드에서 두 개의 서로 다른 대기 메커니즘을 결합하는 방법은 무엇입니까?

  8. 8

    0과 n 사이에 2의 배수를 표시하기 위해 JavaScript에서 두 개의 다른 함수를 결합하는 방법은 무엇입니까?

  9. 9

    SCDF에서 두 개의 다른 출력 채널로 메시지를 보내는 방법은 무엇입니까?

  10. 10

    PHP에서 하나의 양식에서 두 개의 다른 버튼에 대해 서로 다른 작업을 연결하는 방법은 무엇입니까?

  11. 11

    SAPUI5의 서로 다른 환경에서 두 개의 서로 다른 주소에 대한 리소스를 사용하는 방법은 무엇입니까?

  12. 12

    두 개의 다른 텍스트 파일에서 값을 병합하는 방법은 무엇입니까?

  13. 13

    .txt에서 두 개의 값을 두 개의 다른 파일로 분리하는 방법은 무엇입니까?

  14. 14

    메서드는 튜플을 반환합니다. C #에서 튜플의 결과를 가져 오는 두 개의 변수를 할당하는 방법

  15. 15

    카누에서 두 개의 다른 비트 맵 이미지를 표시하는 방법은 무엇입니까?

  16. 16

    두 개의 다른 테이블에서 두 열의 MIN 및 MAX를 찾는 방법은 무엇입니까?

  17. 17

    두 개의 다른 호스트에서 실행되는 두 개의 컨테이너를 연결하는 방법은 무엇입니까?

  18. 18

    MySQL에서 group by로 두 개의 다른 필드 수를 얻는 방법은 무엇입니까?

  19. 19

    두 개의 다른 .Java 파일에서 클래스를 처리하는 방법은 무엇입니까?

  20. 20

    두 개의 다른 커밋에서 동일한 파일의 소스를 얻는 방법은 무엇입니까?

  21. 21

    Keras에서 입력 크기가 다른 두 개의 LSTM 레이어를 결합하는 방법은 무엇입니까?

  22. 22

    React에서 서로 다른 디스플레이로 두 개의 드롭 다운 목록을 동기화하는 방법은 무엇입니까?

  23. 23

    서로 다른 두 개의 확인란에서 두 개의 숫자를 추가하는 GUI를 만드는 방법은 무엇입니까?

  24. 24

    서로 다른 두 개의 확인란에서 두 개의 숫자를 추가하는 GUI를 만드는 방법은 무엇입니까?

  25. 25

    CentOS에서 Nginx를 사용하여 두 개의 다른 포트로 두 개의 블록 서버 (IP 기반)를 설정하는 방법은 무엇입니까?

  26. 26

    두 개의 다른 폴더를 한 폴더에서 리소스를 얻는 방법은 무엇입니까?

  27. 27

    두 개의 다른 서비스에서 데이터를받은 후 지시문에서 함수를 호출하는 방법은 무엇입니까?

  28. 28

    두 개의 다른 CRM 시스템에서 문제 티켓을 복사하는 프로세스를 자동화하는 방법은 무엇입니까?

  29. 29

    QML에서 두 개의 scrollview를 연결하는 방법은 무엇입니까?

뜨겁다태그

보관