
질문
왜 수정된 코드에서는 딕셔너리에 새로운 키와 밸류를 할당할 때 ':' 대신 '=' 를 쓰는거야?
좋은 질문이에요! 코드를 작성하면서 혼동하기 쉬운 부분인데, 여기에서 :와 =의 차이를 이해하는 것이 중요합니다.
: vs =의 차이:는 딕셔너리 리터럴에서 키-값 쌍을 정의할 때 사용:**딕셔너리를 새로 생성**하거나 **딕셔너리 내부의 키-값 쌍을 지정할 때** 사용됩니다. 예를 들어:
my_dict = {
"key": "value", # 여기에서 ':'를 사용
"status": "deficient"
}
-> 그니까 기존에 정해진 값들을 활용할 때 :를 쓰는 듯!
=는 값을 업데이트하거나 변수에 값을 할당할 때 사용:**기존 딕셔너리의 값을 수정**하거나 **새 키를 추가할 때**는 `=`를 사용해야 합니다. 예를 들어:
my_dict["key"] = "new_value" # 기존 키 "key"의 값을 업데이트
my_dict["new_key"] = "value" # 새 키-값 쌍 추가
=를 사용해야 하나?수정된 코드에서는 이미 존재하는 딕셔너리(merged_result)를 업데이트하거나 새 키(status)를 추가하고 있습니다. 이 경우 딕셔너리의 특정 키에 값을 할당해야 하므로 =를 사용해야 합니다.
과거 코드에서는 station_demands라는 리스트에 새 딕셔너리를 생성해서 추가하고 있었어요. 이때는 딕셔너리 리터럴을 사용했기 때문에 :를 사용했습니다:
station_demands.append({
"station_id": row['station_id'], # ':' 사용
"stock": stock,
"predicted_rental": predicted_rental,
"status": "deficient" # ':' 사용
})
수정된 코드에서는 이미 존재하는 딕셔너리(merged_result)의 값을 업데이트하고 있으므로 =를 사용해야 합니다:
merged_result[stationid]["status"] = "deficient" # '=' 사용
: 사용new_dict = {"key": "value"}
= 사용existing_dict["key"] = "new_value"
수정된 코드에서 =를 사용한 이유는, 이미 생성된 merged_result 딕셔너리에 새로운 키-값 쌍을 추가하거나 기존 값을 업데이트하고 있기 때문입니다.