python字典

来源:互联网 发布:辐射4室内光源优化 编辑:程序博客网 时间:2024/06/05 10:32

1. 简介:

字典是一种键映射到值的数据结构,相当于高级一点的列表, 列表的键只能是0到n的整数,通过数字的索引我们就能访问,修改到相关位置的数据, 字典也一样, 高级的地方就在于, 索引不是系统分配的整数, 而是可以使用自定义的内容来做访问的索引值, 这种特性给编程带来极大的便利,值得注意的是python字典的键必须是不可变的,所以可以用数字,字符串或元组充当,但是不能使用列表,因为列表中的元素可能被无意修改 值可以是任意数据类型, 还有非常重要的一点就是字典内容的存储顺序是无序的,

2. 定义:

定义字典时键与值之间用冒号(:)隔开, 键值对之间用逗号(,)隔开, 将所有完整的键值对放在花括号中({}),就实现的字典的初始化定义, 也可以使用dict()将其他内容转为字典.

d1 = {'one': 1, 'two': 2, 'three': 3} #定义字典d2 = {} #定义空字典#使用其他数据生成字典d3 = dict(one=1, two=2, three=3)d4 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))d5 = dict([('two', 2), ('one', 1), ('three', 3)])d6 = dict({'three': 3, 'one': 1, 'two': 2})

3. 访问与修改:

dict0 = {"name":"Bob", "sex":"F", "age":21} #初始化字典#向字典中插入新的元素,类似于c++的mapdict0["addr"] = "chongqing" #想dict0字典中添加地址"addr"项, 值为"chongqing"#如果使用字典中已经存在的key,那么后面的值将会替换前面的值,这里会将年龄替换为22dict0["age"] = 22#访问字典中的键"name"对应的值name = dict0["name"] #和列表访问方式一样#使用get()函数访问第几个条目t = dict3.get(2)

3.1 删除条目

del dict0["name"] #删除"name"这一项dict0.clear() #删除字典中的所有内容,即设为空字典del dict0 #直接删除字典,这个东西就从世界上消失了t = dict3.pop(1) #pop()函数将会删除字典的键值对,并返回该值

4. 遍历字典

print(dict0) #按输出key-value对, 输入内容和定义时一样的#使用print(d1)输出的内容如下    {'two': 2, 'one': 1, 'three': 3}#如果我们使用:for x in dict0:    print(x)#输出的值只有所有键的值, 而不是字典中所有的键值对, 再额外输出dict0[x], 就能输出键值对了for x in dict0:    print(x + " : " + repr(dict0[x]))#因为字典中的每项是以tuple存储的, 亦可以使用如下方式遍历输出:for x in dict0:    print(str(x[0]) + "->" + str(x[1]))#输出所有键for x in dict0.keys():    print(x)#输出所有值for x in dict0.values():    print(x)#输出键值对for x in dict0.items:    print(x)

5. 比较与排序

#比较两个字典是否相同print(dict1 == dict2)from operator import itemgetter#定义新的字典d = {'a':2, 'b':23, 'c':5, 'd':17, 'e':1}#对字典按键升序排序print("按键升序排序")#分别获取容器,容器中单元的排序关键字,下标0,即d[0],表示键,d[1]表示值sd = sorted(d.items(), key = lambda d:d[0])#对字典按键降序序排序print("按键降序序排序")sd = sorted(d.items(), key = lambda d:d[0], reverse = True)#对字典按值升序排序print("按值升序排序")sd = sorted(d.items(), key = lambda d:d[1], reverse = False)#对字典按值降序排序print("按值降序排序")sd = sorted(d.items(), key = lambda d:d[1], reverse = True)


注意:reverse的参数默认是False,即升序排序,要逆序排序请将reverse值该为True,包括sort函数,也可以传递reverse参数设定排序方式

6. 其他

6.1 输出字典中的item的数量

print(len(dict1))

6.2 得到字典的浅复制,即修改复制的字典不会影响到原有的字典

dict3 = dict1.copy()

6.3 “key” in “dict name”判断是否已经包含某个键,功能和c++ map对象的count()一致

print(1 in dict0) #返回bool值
0 0
原创粉丝点击