python学习笔记(22)字典

1、dict函数建立字典,可以映射 字典,或者  键值排列正确的序列

>>> a = {"a":"1","b":"2"}
>>> dict(a)
{'a': '1', 'b': '2'}

>>> a = [("a","1"),("b","2")]
>>> dict(a)
{'b': '2', 'a': '1'}

也可以通过关键词参数来建立字典

>>> a = dict(a="1",b="2")
>>> a
{'b': '2', 'a': '1'}


len(d) 返回字典的项的数量
d[k] 返回键K对应的值
d[k] = v 将值v关联到键k上
del d[k] 删除键k这个项
k in d 检查字典d里面有没有键为k的项



2、字典的 键 是不可改变的  浮点型,字符串或者元组


3、键a 不在字典里,也可以为键a赋值,字典会自动建立包含键a 的项

而列表则不行,列表必须主动添加(append等)


4、   a  in  b   是成员资格测试,a 是否是b中的一员

字典查找的是键    a  in  b ,键a是否在字典b里

而列表查找的是值    a  in  b  ,a值 是否在列表b里 


5、字典的一些方法

D.get(key, 0)       #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
D.has_key(key)      #有该键返回TRUE,否则FALSE
D.keys()            #返回字典键的列表
D.values()
D.items()
D.update(dict2)     #增加合并字典
D.popitem()         #得到一个pair,并从字典中删除它。已空则抛异常
D.clear()           #清空字典,同del dict
D.copy()            #拷贝字典
D.cmp(dict1,dict2)  #比较字典,(优先级为元素个数、键大小、键值大小)
                    #第一个大返回1,小返回-1,一样返回0      
dictionary的复制
dict1 = dict        #别名
dict2=dict.copy()   #克隆,即另一个拷贝


6、

from copy import deepcopy
deepcopy函数可以复制出一个独立的字典,不受原字典的影响

而copy方法复制的字典,会受到原字典的影响
from copy import deepcopy
d = {}
d["x"] = ["1"]
print(d)

c = d.copy()
dc = deepcopy(d)
d["x"].append("xx")
print(c)
print(dc)
结果如下:
{'x': ['1']}
{'x': ['1', 'xx']}
{'x': ['1']}


7、fromkeys 的用法

fromkeys()函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
dict.fromkeys(seq,value)
seq --
字典键值列表。
value -- 可选参数,设置键序列(seq)的值

seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print "New Dictionary : %s" %  str(dict)
dict = dict.fromkeys(seq, 10)
print "New Dictionary : %s" %  str(dict)
以上实例输出结果为:
New Dictionary : {'age': None, 'name': None, 'sex': None}
New Dictionary : {'age': 10, 'name': 10, 'sex': 10}

8、get 的用法

get()函数返回指定键的值,如果值不在字典中返回默认值
dict.get(key, default=None)
key --
字典中要查找的键。
default -- 如果指定键的值不存在时,返回该默认值值
get的好处是如果访问的键不存在,会返回none值,而其他方法则会报错

9、items的用法

items()方法把字典中每对keyvalue组成一个元组,并把这些元组放在列表中返回
iteritems()方法和items()相同,但是会返回一个迭代器对象而不是像items一样返回列表,通常iteritems方法更高效

注意:iteritems在3.0版本以上没有了
person={'name':'lizhong','age':'26','city':'BeiJing','blog':'www.jb51.net'}
for key,value in person.items():
    print 'key=',key,'value=',value

10、keys的用法

将字典的键以列表的形式返回

iterkeys则返回键的迭代器,这个函数方法在3.0版本被取消了

11、popitem的用法

随机返回字典的一个项,并删除它

popitem方法类似list.pop,但是字典里并没有顺序的概念,所以popitem只能随机删除一个项

12、setdefault 的用法

setdefault方法类似get,setdefault还能在字典不含给定键的情况下,自动添加需要查询的键。
如果默认值不改,自动添加的键的值为none

>>> person={'name':'lizhong'}
>>> person.setdefault ("aa")
>>> person
{'name': 'lizhong', 'aa': None}
>>> person.setdefault ("ac","hello")
'hello'
>>> person
{'name': 'lizhong', 'aa': None, 'ac': 'hello'}

13、update的用法

利用一个字典的项更新另一个字典
提供的字典的项会被添加到旧的字典中,若有相同的键则会进行覆盖

>>> person
{'name': 'lizhong', 'aa': None, 'ab': 'none', 'ac': 'hello'}
>>> x = {"aa":"lucy"}
>>> person.update (x)
>>> person
{'name': 'lizhong', 'aa': 'lucy', 'ab': 'none', 'ac': 'hello'}

14、values 的用法

以列表的形式,返回字典的值
(注意:是值,不是项,也不是键)
还有一个函数itervalues 返回值的迭代器,但是在3.0版本已经取消

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值