Python3.5——字典的使用

来源:互联网 发布:编写软件 编辑:程序博客网 时间:2024/06/05 04:13



1、字典的定义:字典是一种key-value(关键字/索引--值)的数据类型,像平时用的字典功能类似,可以通过字母或偏旁、笔画等查找对应页里面的详细内容。

语法:

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi"}print(info)#运行结果:#{'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi', 'stu1101': 'Lan Xiang'}
2、字典的特征:

(1)无序:打印的结果没有按照顺序,字典没有下标,没有位置信息。

(2)取字典里面的元素通过keykey必须是唯一的。

(3)字典的键不可以使用可变类型,如:列表等。


info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi"}print(info)print(info["stu1101"])#运行结果:#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi', 'stu1102': 'Xiao Xiang'}#Lan Xiang

3、字典的操作应用:


(1)修改字典里面的内容(通过键key)

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi"}print(info)info["stu1101"] = "蓝翔"   #修改print(info)#运行结果:#{'stu1102': 'Xiao Xiang', 'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi'}#{'stu1102': 'Xiao Xiang', 'stu1101': '蓝翔', 'stu1103': 'Wang Shi'}

(2)向字典里面添加新的内容(通过键key)


info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi"}print(info)info["stu1104"] = "Tian Xin"   #添加print(info)#运行结果:#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi', 'stu1102': 'Xiao Xiang'}#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang'}

(3)删除字典里面的内容(通过键key)——del:del是Python里面内置通用的方法


info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi"}print(info)del info["stu1102"]   #删除print(info)#运行结果:#{'stu1101': 'Lan Xiang', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi'}
       删除字典里面的内容(通过键key)——定调用.pop(要删除的key)方法

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi"}print(info)info.pop("stu1102")   #删除print(info)#运行结果:#{'stu1103': 'Wang Shi', 'stu1101': 'Lan Xiang', 'stu1102': 'Xiao Xiang'}#{'stu1103': 'Wang Shi', 'stu1101': 'Lan Xiang'}
随机删除字典里面的内容——调用.popitem()方法

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}print(info)info.popitem()   #随机删除print(info)#运行结果:#{'stu1103': 'Wang Shi', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1101': 'Lan Xiang'}#{'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1101': 'Lan Xiang'}
(4)查找字典里面的内容(通过键key):能够查找到直接返回查找内容,不能够查找到返回None——调用.get(key)方法

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}print(info.get('stu1105'))      #查找print(info.get('stu1104'))#运行结果:#None#Tian Xin
(5)判断某个键值key是否存在字典里:key in 字典

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}print('stu1101' in info)print('stu1105' in info)#运行结果:#True#False
4、多级字典的嵌套及操作(注:key尽量不要用中文
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuinstrument_catalog = {    "National":{        "urheen":["stringed instrument"],        "flute":["pipe"],        "zither":["stringed instrument"]    },    "Western":{        "piano":["clavier"],        "guitar":["stringed instrument","I like it"],        "violin":["stringed instrument"]    }}instrument_catalog["Western"]["guitar"][1] = "I like it very much"   #修改嵌套字典里的内容print(instrument_catalog)#运行结果:#['stringed instrument'], 'urheen': ['stringed instrument'], 'flute': ['pipe']}, 'Western': {'violin': ['stringed instrument'], 'piano': ['clavier'], 'guitar': ['stringed instrument', 'I like it very much']}}

5、字典的其他操作



(1)打印字典里面的值(value):调用.values()方法

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}print(info.values())#运行结果:#dict_values(['Tian Xin', 'Xiao Xiang', 'Wang Shi', 'Lan Xiang'])

(2)打印字典里面的key:调用.keys()方法


info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}print(info.keys())#运行结果:#dict_keys(['stu1103', 'stu1104', 'stu1101', 'stu1102'])

(3)在字典里面找key,找到返回值;找不到创建新的键值:调用.setdefault()方法


info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}info.setdefault("stu1104","Li Yuan")print(info)info.setdefault("stu1105","Li Yuan")print(info)#运行结果:#{'stu1101': 'Lan Xiang', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}#{'stu1101': 'Lan Xiang', 'stu1105': 'Li Yuan', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}
(4)字典的更新,若有交叉内容,进行覆盖原始值;若有新内容则添加:调用.update()方法

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}info1 = {    'stu1101':"Lu Li",    3:5,    4:6}info.update(info1)print(info)#运行结果:#{3: 5, 4: 6, 'stu1104': 'Tian Xin', 'stu1101': 'Lu Li', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}
(5)将字典转成列表:调用.items()方法

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}print(info.items())#运行结果:#dict_items([('stu1104', 'Tian Xin'), ('stu1102', 'Xiao Xiang'), ('stu1103', 'Wang Shi'), ('stu1101', 'Lan Xiang')])
(6)初始化一个新的字典:调用dict.fromkeys()方法

c = dict.fromkeys([1,2,3],"test")print(c)#运行结果:#{1: 'test', 2: 'test', 3: 'test'}
注:dict.fromkeys()方法初始化的字典里面的值的地址是由新创建的所有key共享,出现多级嵌套时,通过修改其中一个键值的内容,其他的键值也跟着改变。
d = dict.fromkeys([3,4,5],[2,{"name":"Liu"},345])print(d)d[5][1]["name"] = "Sun"print(d)#运行结果:#{3: [2, {'name': 'Liu'}, 345], 4: [2, {'name': 'Liu'}, 345], 5: [2, {'name': 'Liu'}, 345]}#{3: [2, {'name': 'Sun'}, 345], 4: [2, {'name': 'Sun'}, 345], 5: [2, {'name': 'Sun'}, 345]}
6、字典的循环

(方法一):建议使用(更高效)

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}for i in info:    print(i,info[i])    #i是键key,info[i]是键值#运行结果:#stu1103 Wang Shi#stu1104 Tian Xin#stu1102 Xiao Xiang#stu1101 Lan Xiang
(方法二):

info = {    'stu1101':"Lan Xiang",    'stu1102':"Xiao Xiang",    'stu1103':"Wang Shi",    'stu1104':"Tian Xin"}for k,v in info.items():    #会先把dict转成list,数据大时莫用    print(k,v)#运行结果:#stu1101 Lan Xiang#stu1102 Xiao Xiang#stu1104 Tian Xin#stu1103 Wang Shi