Python3.5——字典的使用



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:ZhengzhengLiu

instrument_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



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值