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. 玩转算法系列--图论精讲 面试升职必备(Java版)

    第1章 和bobo老师一起,玩转图论算法欢迎大家来到我的新课程:<玩转图论算法>.在这个课程中,我们将一起完整学习图论领域的经典算法,培养大家的图论建模能力.通过这个课程的学习,你将能够真 ...

  2. MySQL实战45讲学习笔记:第四十三讲

    一.本节概述 我经常被问到这样一个问题:分区表有什么问题,为什么公司规范不让使用分区表呢?今天,我们就来聊聊分区表的使用行为,然后再一起回答这个问题. 二.分区表是什么? 为了说明分区表的组织形式,我 ...

  3. 理解CMS GC日志

    本文翻译自:https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs 准备工作 JVM的GC日志的主要参数包括如下几个:-XX:+ ...

  4. Vue.js 源码分析(十九) 指令篇 v-html和v-text指令详解

    双大括号会将数据解释为普通文本,而非 HTML 代码.为了输出真正的 HTML,你需要使用 v-html 指令,例如: <!DOCTYPE html> <html lang=&quo ...

  5. com.alibaba.fastjson.JSONObject之对象与JSON转换方法

    com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串.JSON对象,JSON串转成java对象.JSON对象,JSON对象转换Java ...

  6. MySQL for OPS 05:日志管理

    写在前面的话 日志是作为用户排查服务问题的重要依据,在 MySQL 中日志可以分为几类,各自产生着不同的作用.如 error log / bin log / slow log 等.很多时候优化数据库的 ...

  7. Winfrom中设置ZedGraph显示多个标题(一个标题换行显示)效果

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  8. [笔记] C# 如何获取文件的 MIME Type

    MIME Type 为何物: MIME 参考手册 svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types 常规方式 对于有文件后 ...

  9. WPF 基础总结(学习建议)

    举个简单得例子, 类似造房子, 当然实际上可能非常细, 对应的如下所示: 在此之前, 需要了解的是. WPF项目是怎么启动的 Xaml的结构是怎么样组成, 命名控件定义引用的方法. 知道了如何在Xam ...

  10. xiaohacontainer, docker, windows-来自微软Azure CTO的布道

    https://azure.microsoft.com/zh-cn/blog/containers-docker-windows-and-trends/ 今天这个时代当你讨论云计算时,不谈谈docke ...