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. Python中文注释报错的解决方法

    在Python的程序中加了中文注释会报错 解决方法是:在程序的最开始位置加入 # -- coding: utf-8 --

  2. 【CF280D】k-Maximum Subsequence Sum(大码量多细节线段树)

    点此看题面 大致题意: 给你一个序列,让你支持单点修改以及询问给定区间内选出至多\(k\)个不相交子区间和的最大值. 题意转换 这道题看似很不可做,实际上可以通过一个简单转换让其变可做. 考虑每次选出 ...

  3. 【2019.7.25 NOIP模拟赛 T3】树(tree)(dfs序列上开线段树)

    没有换根操作 考虑如果没有换根操作,我们该怎么做. 我们可以求出原树的\(dfs\)序列,然后开线段树维护. 对于修改操作,我们可以倍增求\(LCA\),然后在线段树上修改子树内的值. 对于询问操作, ...

  4. Java 基础系列:不变性

    1.1 定义 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修改其内容. ...

  5. Harbor + Https 部署

    关闭防火墙和selinux systemctl stop firewalld sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selin ...

  6. 【转】Visual Studio 2008 可扩展性开发(二):Macro和Add-In初探

    前言 在VS概览中,我们简单回顾了一下VS的历史.本文将通过两个简单的例子来说明Macro和Add-In的开发.通过Macro我们把VS中的一些重复操作录制下来,之后可以多次运行,节省时间并保持好的心 ...

  7. sysstat工具包之mpstat

    mpstat 1 简介 mpstat是一个实时监控工具,主要报告与CPU相关统计信息,信息存放在/proc/stat文件中: 在多核心cpu系统中,不仅可以查看cpu平均信息,还可以查看指定cpu信息 ...

  8. Python-绘制3D柱形图

    Python-绘制3D柱形图 本文主要讲解如何使用python绘制三维的柱形图,可以得到图1所示的效果. 图1 源代码如下: import numpy as np import matplotlib. ...

  9. NET Excel转换为集合对象

    1.仅适用于规则Excel:表头和数据一一对应 2.涉及到Excel转换为集合对象的部分代码,完整npoi帮助类点击查看 /// <summary> /// 默认把excel第一个shee ...

  10. 进程调度算法spf,fpf,时间片轮转算法实现

    调度的基本概念:从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行. 进程信息 struct node { string name;//进程名称 int id;//进程 ...