一、什么是字典?
字典是python语言中唯一的映射类型
映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的广西,通常被认为是可变的哈希表
字典对象是可变的,它是一个容器类型,能存储任意个数的python对象,其中也包括其他容器类型。
字典类型与序列类型的区别:
1、存取和访问数据的方式不同
2、序列类型只用数字类型的键
3、映射类型可以用其他对象类型作为键
4、映射类型中的数据是无序排列的
5、映射类型用键直接"映射"到值
二、如何创建字典和给字典赋值
简单地说字典就是用大括号包裹的键值对的集合
>>> d1 = {"x":1,3:"xz","z":[1,2,3,4]}
>>> print d1
{"x": 1, 3: "xz", "z": [1, 2, 3, 4]}
三、字典的基本操作
1、如何访问字典中的值
>>> print d1["z"]
[1, 2, 3, 4]
2、如何检查key是否在字典中
方法
>>> d1.has_key("z") //使用has_key()函数来判断键"z"是否存在于字典中
True
in 、ont in
>>> "z" in d1
True
3、如何更新字典
a.添加一个新元素或键值对
>>> d1["test"] = "hello,world!!!!" //随机网字典里面添加了一对键值
>>> print d1
{"test": "hello,world!!!!", "x": 1, 3: "xz", "z": [1, 2, 3, 4]}
b.更新一个元素或键值对
>>> d1["x"] = "love beijing" //通过重新定义旧的键值,起到修改作用
>>> print d1
{"test": "hello,world!!!!", "x": "love beijing", 3: "xz", "z": [1, 2, 3, 4]}
c.删除一个元素或键值对
>>> del d1[3] //通过del函数进行删除相应的key-value
>>> print d1
{"test": "hello,world!!!!", "x": "love beijing", "z": [1, 2, 3, 4]}
>>> d1.pop("test") //通过pop()方法弹出一对key-value
"hello,world!!!!"
>>> print d1
{"x": "love beijing", "z": [1, 2, 3, 4]}
四、字典的方法
1、adict.keys()返回一个保护字典所有key的列表
>>> adict = {3:"3","x":35,"y":[1,2,3,4],"v":"test"}
>>> adict.keys() //通过keys()方法获取字典里面所有的键值
["y", "x", 3, "v"]
2、adict.values()返回一个包含字典所有value的列表
>>> adict.values()
[[1, 2, 3, 4], 35, "3", "test"]
3、adict.items()返回一个包含所有元组的列表
>>> print adict
{"y": [1, 2, 3, 4], "x": 35, 3: "3", "v": "test"}
>>> adict.items() //通过items方法将字典转变成元组
[("y", [1, 2, 3, 4]), ("x", 35), (3, "3"), ("v", "test")]
4、adict.clear()删除字典中的所有项或元素
>>> d6 = {1:3,3:"z","b":78}
>>> print d6
{1: 3, 3: "z", "b": 78}
>>> d6.clear() //利用clear()函数清空整个字典
>>> print d6
{}
5、adict.copy()返回一个字段浅拷贝的副本
>>> d7 = adict.copy() //利用copy()函数复制了一个字典,并且不随原始字典的变化而变化
>>> print d7
{"y": [1, 2, 3, 4], "x": 35, 3: "3", "v": "test"}
>>> adict["test"] = "uuuuuu"
>>> print d7
{"y": [1, 2, 3, 4], "x": 35, 3: "3", "v": "test"}
6、adict.fromkeys(seq,val=None)创建并返回一个新字典,以seq中的元素做该字段的键,val做该字典中所有键对应的初始值
7、adict.get(key,default = None)返回字典中key对应的值,若key不存在字典中,则返回default的值(默认为None)
>>> adict.get("test") //通过get()方法返回对应的value值
"uuuuuu
8、adict.has_keys(key)如果key在字典中,返回True,否则返回False
>>> adict.has_key("3") //通过has_key()方法查看字典中是否有相应的值,有则为真,无则为假
False
>>> adict.has_key("v")
True
9、adict.iteritems()、adict.iterkeys()、adict.itervalues()与它们对应的非迭代方法一样
10、adict.pop(key)和get方法相似,如果字典中存在key,删除并返回key对应的value
11、adict.setdefalut(key,defalut=None)与set()方法相似,但如果字典中不存在key键,由adict[key] = default为它赋值
>>> print adict["vdddd"]
tset
>>> adict.setdefault("vdddd","tsetdddd") //如果值存在,则不进行赋值,不存在则赋值
"tset"
>>> print adict["vdddd"]
tset
12、adict.update(bdict)将字典bdict的键值对添加到字典adict中
五、字典的遍历
1、遍历字典的key(键)
>>> for i in adict.keys(): //通过for循环,并且keys()方法统计字典中的键,进行遍历
... print i
...
3
test
vdddd
v
y
x
2、遍历字段的value(值)
>>> for i in adict.values():
... print i
...
3
uuuuuu
tset
test
[1, 2, 3, 4]
35
3、遍历字段的项
>>> for i in adict.items(): //通过items()方法将字典转为元组的列表,再进行遍历
... print i
...
(3, "3")
("test", "uuuuuu")
("vdddd", "tset")
("v", "test")
("y", [1, 2, 3, 4])
("x", 35)
4、遍历字典的key-value
>>> for key,value in adict.items(): //也是一个经典的遍历
... print "key=%s value=%s"%(key,value)
...
key=3 value=3
key=test value=uuuuuu
key=vdddd value=tset
key=v value=test
key=y value=[1, 2, 3, 4]
key=x value=35