字典
文章目录
1、定义
由一系列键值对组成的可变映射容器
映射:一一对应的关系,且每条记录无序
键:必须唯一且不可变(字符串/数字/元组),不能是列表、字典、集合
注意:字典是无序的,所以不能通过索引访问
2、基本操作
2.1、创建字典
(1)创建空字典
dict01 = {}
dict02 = dict()
print(type(dict01))
print(type(dict02))
(2)创建默认值字典
dict01 = {"姓名": "张三", "age": 18}
print(dict01)
dict02 = dict((("姓名", "张三"), ("age", 18)))
print(dict02)
dict03 = dict([("姓名", "张三"), ("age", 18)])
print(dict03)
2.2、查找元素
(1)根据key查找value
dict01 = {"姓名": "张三", "age": 18}
print(dict01["age"])
如果key不存在时,会查找错误
dict01 = {"姓名": "张三", "age": 18}
print(dict01["height"])
所以一般的查找都会判断key是否在字典中
dict01 = {"姓名": "张三", "age": 18}
if "height" in dict01:
print(dict01["height"])
2.3、修改元素
dict01 = {"姓名": "张三", "age": 18}
dict01['age'] = 10
print(dict01["age"])
key值在字典中时,这时是修改
2.4、添加元素
dict01 = {"姓名": "张三", "age": 18}
dict01["height"] = 10
print(dict01)
通过key值可以直接将数据添加进字典中,key值不在字典中时,属于添加
2.5、删除元素
根据key删除
del dict01["age"]
2.6、遍历元素
(1)遍历字典,得到的是key
dict01 = {"姓名": "张三", "age": 18}
for item in dict01:
print(item)
根据key值获取到value
dict01 = {"姓名": "张三", "age": 18}
for key in dict01:
print(dict01[key])
(2)通过keys方法
dictStud = {"2001": "张三", "2002": "李四", "2003": "王五"}
for key in dictStud.keys():
print(key, ':', dictStud[key], end=";")
(3)通过items方法
dictStud = {"2001": "张三", "2002": "李四", "2003": "王五"}
for key,values in dictStud.items():
print(key, ':', values, end=";")
3、练习
(1)在控制台中循环录入商品信息(名称,单价),如果名称输入空字符,则停止录入。将所有信息逐行打印出来
goodsDict = {}
while True:
goodsName = input("输入名称")
if goodsName == '':
break
goodsPrice = float(input("输入单价"))
goodsDict[goodsName] = goodsPrice
for goodsName, goodsPrice in goodsDict.items():
print(goodsName, goodsPrice)
(2)在控制台中循环录入商品信息(姓名,年龄,成绩,性别),如果名称输入空字符,则停止录入。将所有信息逐行打印出来(字典内嵌列表)
stuDict = {}
stuInfo = []
while True:
name = input("输入学生姓名")
if name == "":
break
age = int(input("输入学生年龄"))
score = float(input("输入学生成绩"))
sex = input("输入学生性别")
stuInfo.append(age)
stuInfo.append(score)
stuInfo.append(sex)
stuDict[name] =stuInfo
for name, info in stuDict.items():
print("%s的年龄是%d,成绩是%f,性别是%s" %(name, stuInfo[0], stuInfo[1], stuInfo[2]))
(3)在控制台中循环录入商品信息(姓名,年龄,成绩,性别),如果名称输入空字符,则停止录入。将所有信息逐行打印出来(字典内嵌字典)
"""
字典
"""
stuDict = {}
stuInfo = []
while True:
name = input("输入学生姓名")
if name == "":
break
age = int(input("输入学生年龄"))
score = float(input("输入学生成绩"))
sex = input("输入学生性别")
stuInfo.append(age)
stuInfo.append(score)
stuInfo.append(sex)
stuDict[name] ={"name":name, "age":age,"score":score, "sex":sex}
for name, info in stuDict.items():
print("%s的年龄是%d,成绩是%f,性别是%s" %(name, stuInfo[0], stuInfo[1], stuInfo[2]))
4、字典推导式
dict01 = {item:item*item for item in range(10)}
print(dict01)
lst = ["张三", "李四", "王二"]
dct = {item:len(item) for item in lst}
print(dct)
lst = ["张三", "李四", "王二"]
lst2 = [101, 102, 103]
dct = {lst[i]: lst2[i] for i in range(len(lst2))}
print(dct)