Python学习笔记 —— 字典

来源:互联网 发布:标准人体尺寸测量数据 编辑:程序博客网 时间:2024/06/06 23:56

格式

字典是区别于`list`的另一种可变容器类型,可以存储任意类型对象

格式:key为唯一且不可变(如字符串,数字,元组),value无要求

dict = {key:value[,key:value[,key:value]]}

例:

dict = {'name':'joe','age':23,'sex':'male'}

访问字典中的值

格式:

dict[key]

例:

tmpDict = {'name':'joe','age':23,'sex':'male'}tmpDict[‘name’]

修改字典中的值:(添加新键值,删除可修改)

添加
dict[newKey] = value
删除
del dict[key]   #清空字典某一条目del dict    #删除字典 ,删除后不再可以使用dict.clear  #清空字典所有条目
修改
dict[key] = newValue

字典内置函数

cmp(dict1,dict2)    :比较两个字典元素type(variable)      :返回变量类型(对象都适用)len(dict)           :计算字典元素个数,即键(key)的总数str(dict)           :输出字典可打印的字符串表示(便于直观观看)

如:

>>> a{'age': '23', 'height': 234, 'sex': 'femal'}>>> str(a)"{'age': '23', 'height': 234, 'sex': 'femal'}"

字典内置方法

1 . dict.clear()        :删除字典内所有元素

如:

>>> a{'age': '23', 'height': 234, 'name': 'joe', 'sex': 'femal'}>>> a.clear()>>> a{}
2 . dict.copy()     :返回一个字典的浅复制        copy又分为深拷贝及浅拷贝:需要导入类copy    区别:        1. copy:浅拷贝,只拷贝父对象(拷贝之后父对象中的元素便有了一个复本,使用只使用父本,也就是说改了原对象中的非子对象元素不会影响),不会拷贝对象的内部子对象(如果有子对象,则只是对子对象建立引用,改变原对象中的子对象值,复本中也会改变)。        2. deepcopy:深拷贝,拷贝父对象及子对象(使用这个拷贝,会将父对象中的元素及子对象全部生成一个复本,改变原对象中的元素或子对象都不会影响复本)。

例:(在字典中因为key不能改变,不便探究,从list中探究)

#!/usr/bin/python#!-*- coding:UTF-8 -*-import copya = ['name','joe','age',23,['hua','test'],'tuple'] #内部字符串为元素,而列表为子对象b = ac = copy.copy(a)        #只对父对象做了复本d = copy.deepcopy(a)        #父对象及子对象都做了复本a.append('femal')a[4].append('yohoo')print 'a[4] is c[4] :' + str(a[4] is c[4])print 'a[4] is c[4] :' + str(a[4] is d[4])print aprint bprint cprint d#输出:a[4] is c[4] :True          #子对象地址一样,未进行拷贝,只是引用a[4] is c[4] :False         #子对象地址不一样,进行了拷贝['name', 'joe', 'age', 23, ['hua', 'test', 'yohoo'], 'tuple', 'femal']['name', 'joe', 'age', 23, ['hua', 'test', 'yohoo'], 'tuple', 'femal']['name', 'joe', 'age', 23, ['hua', 'test', 'yohoo'], 'tuple']['name', 'joe', 'age', 23, ['hua', 'test'], 'tuple'] #与a原来完全一样  
3 . dict.fromkeys(seq[,value])      :创建一个新的字典,以序列seq中元素做字典的key,val为字典所有键对应的初始值:

如:

#!/usr/bin/python#!-*- coding:UTF-8 -*-seq = ('name','age','sex')dict = dict.fromkeys(seq)print str(dict)dict = dict.fromkeys(seq,10)print str(dict)#输出{'age': None, 'name': None, 'sex': None}{'age': 10, 'name': 10, 'sex': 10}
4 . dict.get(key,default=None)  :返回指定键的值,如果不存在,返回default中的值5 . dict.has_key(key)           :如果键在字典中返回true6 . dict.items()                :以列表返回可遍历的(键,值)元组列表

例:

>>> a = {'age': 10, 'name': 10, 'sex': 10}>>> a.items()[('age', 10), ('name', 10), ('sex', 10)]
7 . dict.keys()             :以列表返回一个字典所有的键

例:

>>> a = {'age': 10, 'name': 10, 'sex': 10}>>> a.keys()['age', 'name', 'sex']
8 . dict.values()               :以列表返回字典中的所有值9 . dict.setdefault(key,default=None)   :和get类似,如果键不存在于字典中,将会添加键并将值设为default

例:

>>> a = {'age': 10, 'name': 10, 'sex': 10}>>> a.setdefault(‘addNew’,’yes')'yes'>>> a{‘addNew’: 'yes', 'age': 10, 'name': 10, 'sex': 10}
10 . dict.update(dict2)         :将字典dict2中的键/值更新到dict中

例:

>>> a = {'age': 10, 'name': 10, 'sex': 10}>>> b = {123:234,54:32}>>> a.update(b)>>> a{'name': 10, 54: 32, 'age': 10, 123: 234, 'sex': 10}
0 0
原创粉丝点击