주요 콘텐츠

MATLAB에서 Python 딕셔너리 사용하기

Python® 딕셔너리(dict)를 MATLAB 사전이나 구조체로 변환하거나 그 반대로 변환할 수 있습니다.

  • dictionary 함수를 사용하여 Python 딕셔너리를 MATLAB 사전으로 변환할 수 있습니다. 또는 struct 함수를 사용하여 Python 딕셔너리를 MATLAB 구조체로 변환할 수 있습니다.

  • py.dict 함수를 사용하여 MATLAB 사전이나 구조체를 Python 딕셔너리로 변환할 수 있습니다. MATLAB 사전을 Python 딕셔너리로 변환하지 않은 상태로 바로 Python 함수에 전달할 수도 있습니다.

Python 딕셔너리를 MATLAB 사전이나 구조체로 변환하기

Python 딕셔너리가 있는 경우 dictionary 함수를 사용하여 MATLAB 사전으로 변환할 수 있습니다(R2024a 이후).

예를 들어, Python 딕셔너리를 만들고 이를 MATLAB 사전으로 변환합니다. 여기서 MATLAB은 키를 string형으로 변환하고 값을 double형으로 변환합니다.

dp = py.dict(soup=3.57,bread=2.29,bacon=3.91,salad=5.00);  
dm = dictionary(dp) 
dm =

  dictionary (string ⟼ double) with 4 entries:

    "soup"  ⟼ 3.5700
    "bread" ⟼ 2.2900
    "bacon" ⟼ 3.9100
    "salad" ⟼ 5

MATLAB은 가능하면 Python 키와 값을 MATLAB의 상응하는 유형으로 변환합니다. 이처럼 MATLAB 데이터형으로 자동 변환될 때 Python 딕셔너리 키가 모두 동일한 데이터형이 아니면 키를 셀형 배열 안에 묶습니다. 이는 Python 딕셔너리 값에도 동일하게 적용됩니다.

또는, Python 딕셔너리 키가 유효한 MATLAB 식별자이기만 하다면 struct 함수를 사용하여 Python 딕셔너리를 MATLAB 구조체로 변환할 수 있습니다.

sm = struct(dp)
sm = struct with fields:
     soup: 3.5700
    bread: 2.2900
    bacon: 3.9100
    salad: 5

MATLAB 사전을 Python 딕셔너리로 변환하기

MATLAB은 Python 함수에 전달된 모든 MATLAB 사전을 묵시적으로 Python 딕셔너리로 변환합니다. 그러나 MATLAB 사전이 있는 경우 py.dict를 사용하여 MATLAB 사전을 명시적으로 Python 딕셔너리로 변환할 수도 있습니다. Python 딕셔너리의 키와 값은 MATLAB 유형에 대한 디폴트 변환 규칙에 의해 결정됩니다. 이에 관해서는 MATLAB 데이터를 Python에 전달하기에 설명되어 있습니다.

예를 들어, MATLAB 사전을 만들고, Python 딕셔너리로 변환하지 않고 바로 Python 함수 py.len에 전달합니다.

dm = dictionary(["Robert" "Mary" "Jack"],[357 229 391]);   
l = py.len(dm)
l = 
  Python int with properties:

    denominator: [1×1 py.int]
           imag: [1×1 py.int]
      numerator: [1×1 py.int]
           real: [1×1 py.int]

    3

py.dict를 사용하여 MATLAB 사전을 Python 딕셔너리로 변환할 수도 있습니다.

dp = py.dict(dm)
dp = 
  Python dict with no properties.

    {'Robert': 357.0, 'Mary': 229.0, 'Jack': 391.0}

MATLAB에서 Python 딕셔너리 메서드 사용하기

Python 딕셔너리 메서드를 함수로 호출하고 Python 딕셔너리를 첫 번째 인수로 전달하는 방식으로 MATLAB에서 Python 딕셔너리 메서드를 사용할 수 있습니다.

예를 들어, update 메서드를 사용하여 Python 딕셔너리의 키와 값을 변경합니다. 먼저, 환자와 검사 결과에 대한 Python 딕셔너리를 만듭니다. 그런 다음 test1의 결과를 업데이트합니다.

patientp = py.dict(name="John Doe", ...
    test1 = [], ...
    test2 = [220.0, 210.0, 205.0], ...
    test3 = [180.0, 178.0, 177.5]);

new_test1 = py.dict(test1=[79.0, 75.0, 73.0]);

% This call is equivalent to the Python command patient.update(new_test1)
update(patientp,new_test1);

Python 딕셔너리와 MATLAB 사전을 함께 사용하여 출력값을 표시할 수 있습니다.

patientm = dictionary(patientp);

x = sprintf("%s's test1 results: %d %d %d", ...
    string(patientp{"name"}), double(patientm{("test1")}(1)), ...
    double(patientm{("test1")}(2)), double(patientm{("test1")}(3)));
disp(x)
John Doe's test1 results: 79 75 73

참고 항목

|

도움말 항목