1、字典是python中的数据类型之一、唯一一种大括号{}键值对的数据。

2、存储大量的数据、将数据和数据之间进行关联。

3、通过键可以准确的找到值

4、哈希:可变数据类型就不可哈希

      不可变数据类型可哈希

5、字典的键要求:不可变数据类型(可哈希)、唯一(字典中键只能存在一个)

 字典的值:任意、重复的话后面的值会覆盖前面的值。

6、字典的增:

dic["键"] = "值"

setdefault("meet",18)  参数1:键  参数2:值、字典中键不存在时添加、存在时不进行添加、

            1、先通过键去字典中查找、返回的值是None、才会执行第二步。

            2、将键和值添加到字典中。

            3、键存在时返回键对应的值

            4、键和值添加成功后返回的是添加的值

7、字典的删除:

clear()--清空

pop()删除加参数字典的键、有返回值、返回的是被删除的键对应的值

popitem python3版本中随机删除最后一个

del dic 删除整个字典、加参数写法:del dic["键"]

字典中没有remove

8、字典的修改:

dic["键"] = "值"  #暴力增加:当键在字典中存在时就修改、不存在时增加

dic.update(字典)#update中的字典级别高于点前面的字典

9、字典的查:通过键查找值(暴力查找)、键存在时返回键对应的值、键不存在时就报错。

print(dic.get["key","没有找到啊"])  #通过键查找值、存在时返回键对应的值、不存在时返回None、通过get可以自定义返回值/内容。

print(dic.keys())        #keys获取字典中所有的键、高仿列表可以for循环、但是不能通过索引取值、高仿列表可以迭代。

print(dic.values())       #获取字典中所有的值

print(dic.items())

print(setdefault(键))

10、解构:字典是无序的、python3.6版本以上显示时按照定义顺序去显示。

字典用list转成列表去进行索引查找

items()获取字典中所有的键值以元组的形式

解构一:

a,b = 1020
print(a)
print(b)
解构图解:
a = 10
b = 20
a,b = b,a

解构二:
a,b = "你好"
print(a)
print(b)
11、聚合:
a,b,*c = [1,2,3,4,5,6,7]
print(a,b)
12、字典的嵌套:查找时通过键进行查找、一层一层查找。
13、字典和列表的区别:字典查找顺序是方便、字典查找速度快。
作业题:
#14、请将列表中的每个元素通过 "_" 链接起来。
users = ['西游记','红楼梦','三国演义']
print("_".join(users))
#15、请将列表中的每个元素通过 "_" 链接起来。
users = ['秀色可餐','岳新力',666,'孙一帆']
users[2] = str(users[2])
print("_".join(users))
#16、请将元组 v1 = (11,22,33) 中的所有元素追加到列表 v2 = [44,55,66] 中。
v1 = (11,22,33)
v2 = [44,55,66]
v2.extend(v1)
print(v2)
#17、请将元组 v1 = (11,22,33,44,55,66,77,88,99) 中的所有偶数索引位置的元素 追加到列表v3 = [44,55,66]
#for循环添加
v1 = [11,22,33,44,55,66,77,88,99]
v3 = [44,55,66]
for i in v1:
if v1.index(i) % 2 == 0:
v3.append(i)
print(v3)
# extend添加
v3.extend(v1[::2])
print(v3)
#18、将字典的键和值分别追加到 key_list 和 value_list 两个列表中,如:
info = {'k1':'v1','k2':'v2','k3':'v3'}
key_list = []
value_list = []
for k,v in info.items():
key_list.append(k)
value_list.append(v)
print(key_list)
print(value_list)
#19、字典dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# a. 请循环输出所有的key
for k,v in dic.items():
print(k)
# b. 请循环输出所有的value
for k,v in dic.items():
print(v)
# c. 请循环输出所有的key和value
for i in dic.items():
print(i)
# d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
dic["k4"] = "v4"
print(dic)
# e. 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
dic["k1"] = "alex"
print(dic)
# f. 请在k3对应的值中追加一个元素 44,输出修改后的字典
dic["k3"].append("44")
print(dic)
# g. 请在k3对应的值的第 1 个位置插入1个元素 18,输出修改后的字典
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic["k3"].insert(1,18)
print(dic)
#20、有如下字典,请按照以下的需求对字典进行操作
av_catalog = {
"欧美":{
"www.宝元.com": ["很多免费的,世界最大的","质量一般"],
"www.alex.com": ["很多免费的,也很大","质量挺好"],
"oldboy.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"hao222.com":["质量很高,真的很高","全部收费,屌丝请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]
},
"大陆":{
"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
}
# a.给此 ["很多免费的,世界最大的","质量一般"]列表第二个位置插入一个元素:'量很大'。
av_catalog["欧美"]["www.宝元.com"].insert(2,"量很大")
print("插入一个元素",av_catalog)
# b.将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。
av_catalog["欧美"]["hao222.com"].pop(1)
print("删除",av_catalog)
# c.将此["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]列表的 "verygood"全部变成大写。
av_catalog["日韩"]["tokyo-hot"][1] = av_catalog["日韩"]["tokyo-hot"][1].upper()
print("全部变成大写",av_catalog)
# d.给 '大陆' 对应的字典添加一个键值对 '1048' :['一天就封了']
av_catalog["大陆"][1048] = ['一天就封了']
print("添加键值对一天就封了",av_catalog)
# e.删除这个键值对:"oldboy.com": ["多是自拍,高质量图片很多","资源不多,更新慢"]
av_catalog["欧美"].pop("oldboy.com")
print("删除键值对oldboy.com",av_catalog)
# f.给此["全部免费,真好,好人一生平安","服务器在国外,慢"]列表的第一个元素对应的字符串,加上一句话:'可以爬下来'
av_catalog["大陆"]["1024"][0] = av_catalog["大陆"]["1024"][0] + "可以爬下来"
print("可以爬下来",av_catalog)
#21、请循环打印k2对应的值中的每个元素。
info = {'k1':'v1','k2':[('alex'),('wupeiqi'),('oldboy')],}
info = {'k1':'v1','k2':[('alex'),('wupeiqi'),('oldboy')],}
for i in info["k2"]:
print(i)
#22、有字符串"k: 1|k1:2|k2:3 |k3 :4" 处理成字典 {'k':1,'k1':2,'k3':4}
s = "k : 1 | k1 : 2 | k2 : 3| k3 : 4"
dic = {}
for i in s.replace(" ","").split("|"):
k,v = i.split(":")
dic[k] = v
print(dic)
# 23、有如下值 li= [11,22,33,44,55,77,88,99,90] ,将所有大于 66 的值保存至字典的第一个key对应的列表中,将小于 66 的值保存至第二个key对应的列表中。result = {'k1':[],'k2':[]}
result = {'k1':[],'k2':[]}
li = [11,22,33,44,55,77,88,99,90]
for i in li:
if i > 66:
result["k1"].append(i)
else:
result["k2"].append(i)
print(result)
# 24、看代码写结果
v = {}
for index in range(10):
v['users'] = index
print(v)
#结果:{'users': 9}
#25、输出商品列表,用户输入序号,显示用户选中的商品
"""
# 商品列表:
# goods = [
# {"name": "电脑", "price": 1999},
# {"name": "鼠标", "price": 10},
# {"name": "游艇", "price": 20},
# {"name": "美女", "price": 998}
# ]
# 要求:
# 1:页面显示 序号 + 商品名称 + 商品价格,如:
# 1 电脑 1999
# 2 鼠标 10
# ...
# 2:用户输入选择的商品序号,然后打印商品名称及商品价格
# 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
# 4:用户输入Q或者q,退出程序。
"""
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}
] #1、首先把商品放在货架上
shopping_car = {} #15、接下来设置购物车空字典
print('欢迎光临!') #2、接下来有个欢迎的语句
while True: #23、加不断的循环
money = input('让我看看你的钱输入Q或者q,退出程序:').strip() #3、接下来定义钱并点strip下去除空白
if money.isdigit() and int(money) > 0: #4、接下来判断钱是数字还是字母是否大于0
while True: #20、再加下不断循环
for i,k in enumerate(goods): #5、接下来循环货架用到枚举、循环货架里面的所有商品以及价格
print('序号{},商品{},价格{}'.format(i + 1,k['name'],k['price'])) #6、接下来用到字符串拼接、
choose = input('请输入你要购买的商品序号:') #7、接下来设置买家购买的序号
if choose.isdigit() and int(choose) < len(goods): #8、接下来判断输入的商品序号,
num = input('你要购买的商品数量') #10、接下来设置输入的商品数量
if num.isdigit(): #11、再接着判断数量是数字
if int(money) > goods[int(choose)]['price'] * int(num): #12、接下来判断钱是否够购买东西
money = int(money) - goods[int(choose)]['price'] * int(num) #13、这一步是剩余的钱等于总共的钱减去已经购买的商品价格乘以数量
if goods[int(choose)]['name'] in shopping_car: #16、接下来判断购买的商品是否在购物车里面
shopping_car[goods[int(choose)]['name']] = shopping_car[goods[int(choose)]['name']] + int(num)#18、购买的商品名字等于
else:
shopping_car[goods[int(choose)]['name']] = int(num) #17、否则回调不在的话选择的名字等于选择的数量
print('购物车中的商品有{},你的余额有{}'.format(shopping_car,money))#19、最后再告诉下购物车中的状况
else:
print('钱不够,回去') #14、设置钱不够的结果
break #20、加下中断
else:
print('输入序号有误,请重新输入,') #9、回调出否则的结果
if money.upper() == "Q": #21、如果是Q就退出
break
else: #22、打印输入有误的
print("输入有误:")

python27期day05:字典、字典嵌套、作业题。的更多相关文章

  1. 记录我的 python 学习历程-Day05 字典/字典的嵌套

    一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...

  2. day05 python字典

    day05 python   一.字典     1.dict 用{}表示, 存放的是: key:value    (开发的都知道的是键值对数据,这样说)         key: 关键字不能重复, 不 ...

  3. 总结day5 ---- ,字典的学习,增删改查,以及字典的嵌套, 赋值运算

    内容大纲: 一:字典的定义 二:字典的增加 >1:按照key增加,  无则增加,有则覆盖 >2:setdefault()  ,无则增加,有则不变 三:字典的删除 >1:pop()  ...

  4. Python 7 列表 for 字典,嵌套

    列表: 基本格式:变量名 = [元素1,元素2,元素3] 创建:A = ['访客','admin',19]  或  A = list(['armin','admin',19]),  后者更倾向于转换为 ...

  5. python_字典列表嵌套的排序问题

    上一篇我们聊到python 字典和列表嵌套用法,这次我们聊聊字典和列表嵌套中的排序问题,这个在python基础中不会提到,但实际经常运用,面试中也喜欢问,我们娓娓道来. 在说组合排序之前,先来看看排序 ...

  6. python27期day10:函数的动态参数、函数的注释、函数的名称空间、函数的嵌套、global(修改全局的)、nonlocal(修改局部的)、函数名的第一类对象及使用、作业题。

    1.动态参数的作用: 能够接收不固定长度参数 位置参数过多时可以使用动态参数 * args是程序员之间约定俗称(可以更换但是不建议更换) * args获取的是一个元组 ** kwargs获取的是一个字 ...

  7. python27期day12:推导式、内置函数、高阶函数、匿名函数、作业题

    1.推导式:做一些有规律的数据结构 列表推导式: 普通循环模式: [加工后的变量 for 循环] 示例一:print([i for i in range(1,51)]) 结果:[1, 2, 3, 4, ...

  8. python27期day13:闭包、装饰器初始、标准版装饰器、作业题

    1.闭包: 保护数据安全.保护数据干净性. 2.闭包的定义:在嵌套函数内.使用非全局变量(且不使用本层变量) 将嵌套函数返回 闭包的目的:要接受被装饰的函数和被装饰函数需要的参数3.闭包举例子: de ...

  9. python27期day07:基础数据类型补充、循环删除的坑、二次编码、作业题。

    1.求最大位数bit_length: a = 10 #8421 1010print(a.bit_length())结果:42.capitalize首字母变大写: s = "alex" ...

随机推荐

  1. Codeforces Round #554 (Div. 2) D 贪心 + 记忆化搜索

    https://codeforces.com/contest/1152/problem/D 题意 给你一个n代表合法括号序列的长度一半,一颗有所有合法括号序列构成的字典树上,选择最大的边集,边集的边没 ...

  2. 解决4K屏电脑显示问题

    在科技飞速发展的年代,4K屏幕不断成为电视.电脑广告的亮点功能,它在显示效果上,确实效果不错,如下图.但是,在电脑上使用是否会影响眼睛的健康问题,还没有权威的论证. 毕竟4k高清屏幕还不是主流,很多软 ...

  3. OpenDaylight开发hello-world项目之开发工具安装

    OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...

  4. OpenCV Error: Unknown error code -10 (Raw image encoder error: Empty JPEG image (DNL not supported)) in throwOnEror 错误

    出现上面这样的错误可以肯定是传了空指针导致的, 刚开始出现这样的问题, 并且是概率性的, 网上找了一遍都没找到解决方案, 然后自己一行一行代码注释, 发现还是会出现这样的问题, 当时就懵逼了, 我从打 ...

  5. Kubernetes 遇到的问题

    Kubernetes 遇到的问题 k8s 版本 k8s v1.13.5 docker 18.09.2 问题一 kubelet 报错 May 22 10:14:42 test-ops-k8s-03 ku ...

  6. HTML连载25-通配符选择器&选择器综合练习

    一.通配符选择器 作用:给当前页面上所有的标签设置属性 (2)格式: *{属性:值:} (3)注意点:由于通配符选择器是给界面上所有的标签设置属性,因此在设置之前会遍历所有的标签,如果当前界面上的标签 ...

  7. playtime-浙大羽协裁判部训练方案[随机事件序列的应用]

    首先随机一列人名 然后按比例随机一列事件项. 然后将不确定项的人名更正为“某人”[比如发球违例,,,你怎么知道谁在发球] 最后定义一个初始化. 初始化呢,就是挑边. 球权还是场权? 发球还是接发? 谁 ...

  8. HTML+css基础 css选择器的种类

    css选择器的种类 标签   权重是001 类  class权重是0010 相当于255个标签选择器 Id   权重是0100相当于255个类 *通配符   代表所有的标签   权重是0000 后代选 ...

  9. Python 学习 第17篇:从SQL Server数据库读写数据

    在Python语言中,从SQL Server数据库读写数据,通常情况下,都是使用sqlalchemy 包和 pymssql 包的组合,这是因为大多数数据处理程序都需要用到DataFrame对象,它内置 ...

  10. centos ftp服务器搭建 vsftpd 匿名访问配置方法 ftp 550 Failed to open file 错误处理

    vsftpd是linux下常用的ftp服务软件,配置起来其实不复杂,只是网上很多文章,配置后都无法成功.我使用它是用于局域网内部分享文件的,所以使用匿名的方式. ftp本身密码是明文传输的,如果需要安 ...