map是什么?
Map是具有极快查找速度的键值对结构。
就是储存键值对的嘛,类比python的dict类型
创建.
写起来还是挺麻烦,每个键值对都用中括号包围,然后最后再上一个大的中括号。python用的是冒号
var m= new Map([['libai',85],['xiaoming',33],['liqiang',67]]);
与python对比
dict = {'libai':85,'xiaoming':33,'liqiang':67}
用key来获取value
都是利用get方法
js
m.get("libai") //85
python
>>> dict.get('libai')
85
删除键值对
python这是大白话啊!这设计服了!
js
m.delete("libai")
//true
m
//Map(2) {"xiaoming" => 33, "liqiang" => 67}
python
>>> del dict['libai']
>>> dict
{'xiaoming': 33, 'liqiang': 67}
修改字典值
js
m.set("liqiang", 99)
//Map(2) {"xiaoming" => 33, "liqiang" => 99}
python
>>> dict['xiaoming']=99
>>> dict
{'xiaoming': 99, 'liqiang': 67}
添加键值对
和修改其实是一样的。
判断有无某个键
python又一次奇巧的设计
js
m.has('xiaoming')
true
python
>>> 'xiaoming' in dict
True
遍历
js
for (var [x,y] of m){
console.log(x+' value: '+y);
}
// xiaoming value: 33 liqiang value: 99
python
>>> for x in dict:
print (x+' value '+str(dict[x]))
xiaoming value 99
liqiang value 67
还可以这么玩,带不带括号都可以
>>> for (x,y) in m.items():
print (x+str(y))
xiaoming33
libai85
liqiang67
>>> for x,y in m.items():
print (x+str(y))
xiaoming33
libai85
liqiang67
总结
js设计的中规中矩,python设计不依常理出牌。比如删除m.delete("libai")
点操作符 正常。
python del dict['libai']
这么设计写起来更方便
参考
初步探究ES6之for循环和Map,Set - brizer的博客 - CSDN博客
[python]遍历字典dict的几种方法 - cn_wk的专栏 - CSDN博客