Python
선언
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
추가
>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> a
{1: 'a', 2: 'b'}
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}
>>> a[3] = [1,2,3]
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
수정
>>> a[2] = 'c'
>>> a
{1: 'a', 2: 'c', 'name': 'pey', 3: [1, 2, 3]}
삭제
>>> del a[1]
>>> a
{2: 'c', 'name': 'pey', 3: [1, 2, 3]}
>>> a.clear()
>>> a
{}
리스트로 변환
>>> list(a.keys())
['name', 'phone', 'birth']
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
>>> a.values()
dict_values(['pey', '0119993323', '1118'])
>>> a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
>>> for k in a.keys():
... print(k)
...
name
phone
birth
관련 함수들
get - a['nokey']처럼 존재하지 않는 키(nokey)로 값을 가져오려고 할 경우 a['nokey']는 Key 오류를 발생시키고 a.get('nokey')는 None을 돌려준다는 차이가 있다.
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> print(a.get('nokey'))
None
>>> print(a['nokey'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'nokey'
딕셔너리 안에 찾으려는 Key 값이 없을 경우
미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 편리하다.
>>> a.get('nokey', '111')
'111'
in - 특정 key가 dict 안에 있는지 확인
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False
Dict() - 딕셔너리 만들기
// 딕셔너리 = dict(키1=값1, 키2=값2)
test1 = dict(a=490, b=334, c=550, d=18.72)
print(test1)
// 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
test2 = dict(zip(['a', 'b', 'c', 'd'], [490, 334, 550, 18.72]))
print(test2)
// 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
test3 = dict([('a', 490), ('b', 334), ('c', 550), ('d', 18.72)])
print(test3)
// 딕셔너리 = dict({키1: 값1, 키2: 값2})
test4 = dict({'a': 490, 'b': 334, 'c': 550, 'd': 18.72})
print(test4)
{'a': 490, 'b': 334, 'c': 550, 'd': 18.72}
{'a': 490, 'b': 334, 'c': 550, 'd': 18.72}
{'a': 490, 'b': 334, 'c': 550, 'd': 18.72}
{'a': 490, 'b': 334, 'c': 550, 'd': 18.72}
Dart
선언
Map my_map = {};
my_map['name'] = 'my map';
Map my_map2 = new Map{'name':'my map 2'};
Map my_map3 = new Map();
my_map3['name'] = 'my map 3';
추가
my_map['date'] = '20211006';
Map my_map3 = {'type': 'tutorial'};
my_map.addAll(my_map3);
print(my_map); //{date: 20211006, type: tutorial}
수정
my_map['name'] = 'my map';
my_map['date'] = '20211006';
print(my_map); //{name: my map, date: 20211006}
my_map['name'] = 'your map';
print(my_map); // {name: your map, date: 20211006}
삭제
my_map['name'] = 'your map';
my_map['date'] = '20211006';
my_map['type'] = 'tutorial';
my_map.remove('name');
print(my_map); //{date: 20211006, type: tutorial}
my_map.clear();
print(my_map); //{}
검색
print(my_map.containsKey('name')); // false
print(my_map.containsValue('20211006')); // true
그외
.keys : Map에 담긴 key들을 이터러블 객체로 모아 돌려준다.
.values : Map에 담긴 value들을 이터러블 객체로 모아 돌려준다.
.entries : Map에 담긴 key-value 쌍(엔트리)들을 이터러블 객체로 모아 돌려준다.
print(my_map.keys); // (date, type)
print(my_map.values); // (20211006, tutorial)
print(my_map.entries); // (MapEntry(date: 20211006), MapEntry(type: tutorial))
.isEmpty : Map이 비었다면 true, 그렇지 않다면 false를 반환한다.
.isNotEmpty : Map에 뭔가 들어 있다면 true, 비었다면 false를 반환한다.
length : Map에 든 key-value 쌍이 몇 개인지 반환한다.
리스트 to 맵 - Map.fromIterables
List<String> letters = ['I', 'V', 'X'];
List<int> numbers = [1, 5, 10];
Map<String, int> map = Map.fromIterables(letters, numbers);
print(map);
--------------------------------------------------
{I: 1, V: 5, X: 10}
======================================================
List<int> numbers = [1, 2, 3];
Map<String, int> map = Map.fromIterable(
numbers,
key: (k) => 'double ' + k.toString(),
value: (v) => v * 2);
print(map);
--------------------------------------------------
{double 1: 2, double 2: 4, double 3: 6}
Golang
key의 자료형이 int이고, value의 자료형이 string인 map
package main
import "fmt"
func main() {
map_int_str := make(map[int]string)
map_int_str[1] = "월"
map_int_str[2] = "화"
map_int_str[3] = "수"
map_int_str[4] = "목"
map_int_str[5] = "금"
map_int_str[6] = "토"
map_int_str[7] = "일"
fmt.Println(map_int_str)
}
func main() {
map_int_str := map[int]string {
1: "월",
2: "화",
3: "수",
4: "목",
5: "금",
6: "토",
7: "일",
}
fmt.Println(map_int_str)
}
value, ok := map_int_str[1]
fmt.Println(value, ok)
value, ok = map_int_str[5]
fmt.Println(value, ok)
value, ok = map_int_str[8]
fmt.Println(value, ok)
key가 1일떄 value는 ‘월’ ok 는 true가 반환
key가 5일떄 value는 ‘금’ ok 는 true가 반환
key가 8일떄 value는 (공백), ok 는 false가 반환
for key := 0; key < 10; key++ {
if value, ok := map_int_str[key]; ok {
fmt.Println(value)
} else {
fmt.Println("key", key, "is not exist")
}
}
-----------------------------------------
key 0 is not exist
월
화
수
목
금
토
일
key 8 is not exist
key 9 is not exist
'Data structure > Data type' 카테고리의 다른 글
[Python] 깊은복사(copy 와 deepcopy) (0) | 2023.02.27 |
---|---|
[Flutter] Collection , Generic (0) | 2022.04.14 |
List - Python, Dart, Golang(배열/슬라이스) (0) | 2021.11.29 |