2022년 3월 30일 수요일

파이썬의 딕셔너리와 펄의 해시를 비교해 보다

펄(Perl)의 데이터 유형 중 하나인 레퍼런스는 어떤 데이터 유형이든 가리킬 수 있다. 그런데 쓰임새가 약간 독특해서 '내가 레퍼런스를 쓰고 있다'는 것을 염두에 두고 코딩을 하지 않으면 혼동을 하기 쉽다. 간혹 anonymous 형태의 자료를 쓰기도 한다.

파이썬 초급 공부를 하면서 딕셔너리(dictionary)라는 데이터 유형은 펄의 해시와 아주 비슷하다는 것을 알게 되었다. 그런데 값을 넣어야 하는 자리에 태연하게 리스트를 넣는 것을 보고 약간의 문화적 충격(?)을 받았다. 간단한 파이썬 예제 코드를 살펴보자.

>>> var = {'kor':[100, 80, 90], 'eng':[88, 65, 44], 'mat':[80, 85, 99]}
>>> type(var)
<class 'dict'>
>>> var['kor']
[100, 80, 90]
>>> var['kor'][0]
100

다음은 펄 코드.

my @array = ( 80, 85, 99 );
my %var = (
    kor => [ 100, 80, 90 ],
    eng => [ 88, 65, 44 ],
    mat => \@array
);
print $var{'kor'}->[1], "\n";
print $var{'mat'}->[2], "\n";

파이썬에서 리스트를 선언할 때에는 [..] 안에 원소를 넣지만 펄은 (..)이다. 그런데 펄에서 배열에 대한 anonymous array를 만들어 reference에 할당할 때에는 [..]를, anonymous hash를 만들어 같은 일을 할 때에는 {..}를 써야 한다.  아, 헷갈린다. 

파이썬의 pandas 라이브러리를 더듬더듬 쓰기 시작하면서 또 걱정 거리가 생겼다. R의 데이터프레임 사용법과 혼동하기 딱 좋으니 말이다. 가끔 용법이 비슷한 주제에 대해서 각 프로그래밍 언어를 비교하는 표를 만들어 암기를 해야 될 것만 같다. 비교 프로그래밍 언어학이 정말로 필요한 순간이다.

댓글 없음: