超详细的字典(dict)

字典

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)

内存

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值