Python语法第5讲:字典

Python中的字典类似于Java中的Map,是以名值对的形式来保存数据的,是一种数据的映射方式

1、创建字典

dic  = {"张三":"男", "李四":"女", "王五":"女博士"} #方式1
dic1 = dict((("LiLei", "Chinese"), ("HanMeimei", "England"))) #方式2
dic2 = dict(LiLei="Chinese", HanMeimei="England") #方式3

print(dic) #控制台输出
print(dic1)
print(dic2)
运行结果:

2、用key创建字典

dic3 = {}
dic4 = dic3.fromkeys(range(0, 5), "赞") #key的值是0-5,value的值是赞

print(dic4)
运行结果:



3、通过key来获取字典中的value

dic  = {"张三":"男", "李四":"女", "王五":"女博士"}
key = "张三"
vale = dic[key] #获取字典中key为张三的value

print(vale)

运行结果:



4、修改/添加字典

向字典中添加键值对,系统会先在字典中寻找这个key,如果找到了就修改key的value,否则在字典中添加这个键值对

dic2 = dict(LiLei="Chinese", HanMeimei="England")
print(dic2) #输出未修改的字典

dic2["LiLei"] = "England" #修改原有字典项
dic2["Mike"] = "Cube" #添加字典项

print(dic2) #输出修改后的字典
运行结果:


5、通过get函数获取字典中的value

dic1 = dict((("LiLei", "Chinese"), ("HanMeimei", "England")))

value2 = dic1.get("HanMeimei") #通过get函数来获取字典的值,如果所找的项不存在则返回None
value3 = dic1.get("张三", "没有找到") #如果找不到key=张三的value,name就返回函数的第二参数值

print(value2)
print(value3)
运行结果:

6、判断字典中是否存在某个键值对

dic1 = dict((("LiLei", "Chinese"), ("HanMeimei", "England")))
result = "HanMeimei" in dic1 #如果dic1中有key=HanMeimei的key则返回true
result1 = "HanMeimei" not in dic1  #如果dic1中没有key=HanMeimei的key则返回true

print(result)
print(result1)
运行结果:

7、字典拷贝

拷贝字典并获得一个新的字典,新字典的键值对和被拷贝字典的键值对内容一致,但在内存中的地址指向不一致

a = {"one":1, "two":2, "three":3}
b = a.copy() #拷贝函数
print("字典a:%s" %a)
print("拷贝后的字典b:%s" %b)
aID = id(a) #获取id的函数
bID = id(b)
print("内存地址,字典a的ID:%s" %aID)
print("内存地址,字典b的ID:%s" %bID)
运行结果:

8、删除字典

dic1 = dict((("LiLei", "Chinese"), ("HanMeimei", "England")))
dic1.pop("LiLei") #删除字典项,即删除key=LiLei的
print(dic1)

dic1.clear() #清空字典项
print(dic1)
运行结果:


9、更新字典

将一个字典添加到另一个字典中

a = {"one":1, "two":2, "three":3}
b = {'a':'Dog', 'b':'Cat'}
a.update(b) #更新字典

print(a)
运行结果:



综合案例

需求说明

在图书馆每个用户都可以有借书的权利,图书馆中有4种书籍可以借阅,分别是Java、PHP、Python和Android;用户每次可以借阅多本书;输入借书用户的姓名,控制台输出该用户借阅的书籍,要求使用字典实现需求

需求分解

1、定义一个书架的字典,将Java、PHP、Python、Android放入书架字典中

2、定义一个所有用户借书的字典,只要有用户借书,就将用户和所借书籍信息存入字典(key=用户名,value=书籍数组)

实现

bookTemp = {"1":"Java", "2":"PHP", "3":"Python", "4":"Android"} #字典,可以外借的书
bookDic = {} #字典,所有用户借的书,key=姓名;value=书的数组
mainFlag = True #主程序的循环标志,mainFlag=Flase则表示程序结束
while mainFlag:
    name = input("请输入姓名:\n")
    bookFlag = True #借书的循环标志,bookFlag=False则表示借书完成
    bookArr = [] #存放借书的数组
    while bookFlag:
        book = input("请输入要借阅的书籍:1=%s;2=%s;3=%s;4=%s;5=完成\n" %(bookTemp.get("1"), bookTemp.get("2"), bookTemp.get("3"), bookTemp.get("4")))
        if book != "5": #未完成借书
            bookArr.append(book) #将所借的书存放到数组
        else: #完成借书
            bookDic[name] = bookArr #将借书人和所借书籍存到所有用户借书的字典
            bookFlag = False #借书本次借书
    go = input("是否结束?y/n"+"\n")
    if go == "y":
        mainFlag = False #结束主程序

#输出借书的结果
name = input("请输入借书人姓名:\n")
bookArr = bookDic.get(name) #通过key找到借书的数组
if bookArr != None and len(bookArr) > 0: #非空校验
    for item in bookArr: #循环获取所借数据的key
        print(bookTemp.get(item)) #通过key获取数据的value
else:
    print("未借图书")
运行结果:













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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值