字典,python中的map

来源:互联网 发布:qq微信抢红包软件 编辑:程序博客网 时间:2024/05/19 17:47
python中所谓的字典和其他语言中的map其实是一码事
1.基本操作
>>> info={"name":"weihograo","tel":"18665832719",'wife':'huajingfen'}
>>> len(info)
3
>>> info["wife"]
'huajingfen'
>>> "name" in info
True

看看下面和序列的区别
>>> nameArray=["wei","hongrao"]
>>> nameMap={"xing:":"wei","ming":"hongrao"}
>>> nameArray[2]="IT"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> nameMap["work"]="IT"
>>> nameMap
{'work': 'IT', 'ming': 'hongrao', 'xing:': 'wei'}
>>>


2. dict
>>> names=["xing","ming"]
>>> namesvalue=["wei","hongrao"]
>>> namesss=[names,namesvalue]
>>> namesss
[['xing', 'ming'], ['wei', 'hongrao']]
>>> namesssMap=dict(namesss)
>>> namesssMap
{'wei': 'hongrao', 'xing': 'ming'}

3. clear:奇怪的方法
   clear会原地操作,
>>> names={"name":"weihongrao"}
>>> names2=names
>>> names2
{'name': 'weihongrao'}
>>> names={}
>>> names2
{'name': 'weihongrao'}

以上可以看出当names被赋给另个map之后,不会影响到names2的map,就是说原来的map依然存在,names2就是指向原来的map, 但是当用了clear之后,就会使原来的map的值改变见如下

>>> names
{'name': 'weihongrao'}
>>> names2=names
>>> names2
{'name': 'weihongrao'}
>>> names.clear()
>>> names
{}
>>> names2
{}

4. copy :浅度copy,deepcopy:深度copy
 浅度复制
>>> names
{'work': ['IT', 'SDUTY', 'DRIVER'], 'name': 'weihongrao'}
>>> names2=names.copy()
>>> names2
{'work': ['IT', 'SDUTY', 'DRIVER'], 'name': 'weihongrao'}
>>> names["name"]="jixianqiuxue"
>>> names["work"].remove('IT')
>>> names
{'work': ['SDUTY', 'DRIVER'], 'name': 'jixianqiuxue'}
>>> names2
{'work': ['SDUTY', 'DRIVER'], 'name': 'weihongrao'}
因为work是一个序列所以names和names2都指向它,但是name却不一样

深度复制
>>> names
{'work': ['SDUTY', 'DRIVER'], 'name': 'jixianqiuxue'}
>>> names2=deepcopy(names)
>>> names['work']+="IT"
>>> names
{'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> names2
{'work': ['SDUTY', 'DRIVER'], 'name': 'jixianqiuxue'}


5. fromkeys
>>> name={}.fromkeys(["name","age"])
>>> name
{'age': None, 'name': None}
>>> name2=dict.fromkeys(["name","age"])
>>> name2
{'age': None, 'name': None}

6.get, 和[index]区别
>>> names
{'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> names.get("age")
>>> print names.get("age")
None
>>> print names['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

7. has_key
>>> names
{'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> names.has_key('age')
False

8. items ,keys
>>> names
{'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> names.items()
[('work', ['SDUTY', 'DRIVER', 'I', 'T']), ('name', 'jixianqiuxue')]
>>> names.keys()
['work', 'name']

9. pop 和popitem
>>> names
{'home': 'guangxi', 'age': '27', 'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> names.pop("home")
'guangxi'
>>> name.popitem()
('age', None)

10. update, 更新和加入
>>> names
{'age': '27', 'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> home={"home":"guangxi"}
>>> names.update(home)
>>> names
{'home': 'guangxi', 'age': '27', 'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> home={"home":"guigang"}
>>> names.update(home)
>>> names
{'home': 'guigang', 'age': '27', 'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}

11.values

>>> names
{'home': 'guigang', 'age': '27', 'work': ['SDUTY', 'DRIVER', 'I', 'T'], 'name': 'jixianqiuxue'}
>>> names.values()
['guigang', '27', ['SDUTY', 'DRIVER', 'I', 'T'], 'jixianqiuxue']
>>>
原创粉丝点击