python学习内容.05

本节主要内容:
1. 字典的简单介绍 2. 字典增删改查和其他操作 3. 字典的嵌套
一. 字典的简单介绍    字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是唯一的. 在保存的时候, 根据key来计 算出一个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的 key‘必须是可hash的, 如果你搞不懂什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的, 那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址而规定的.
已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set
语法 :    {key1: value1, key2: value2....}
注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据
# 合法 dic = {123: 456, True: 999, "id": 1, "name": ‘sylar‘, "age": 18, "stu": [‘帅哥‘, ‘美女‘], (1, 2, 3): ‘麻花藤‘} print(dic[123]) print(dic[True]) print(dic[‘id‘]) print(dic[‘stu‘]) print(dic[(1, 2, 3)]) # 不合法 # dic = {[1, 2, 3]: ‘周杰伦‘}   # list是可变的. 不能作为key # dic = {{1: 2}: "哈哈哈"}     # dict是可变的. 不能作为key dic = {{1, 2, 3}: ‘呵呵呵‘}    # set是可变的, 不能作为key
dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. 而hash表不是连续的. 所以不能进行切片工作. 它只能通过key来获取dict中的数据
二. 字典的增删改查和其他相关操作   
1. 增加
dic = {} dic[‘name‘] = ‘周润发‘     # 如果dict中没有出现这个key, 就会新增一个key-value的组合进dict dic[‘age‘] = 18 print(dic)
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值 dic.setdefault(‘李嘉诚‘)   # 也可以往里面设置值. dic.setdefault("李嘉诚", "房地产")    # 如果dict中已经存在了. 那么setdefault将不会起作用
print(dic)
2. 删除
ret = dic.pop("jay") print(ret)
del dic["jay"] print(dic)
# 随机删除. ret = dic.popitem()
# 清空字典中的所有内容 dic.clear()
3. 修改
dic = {"id": 123, "name": ‘sylar‘, "age": 18} dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"} dic.update(dic1)    # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增. print(dic) print(dic1)
4. 查询
        查询一般用key来查找具体的数据.
 print(dic[‘name‘]) # print(dic[‘sylar‘])     # 报错 print(dic.get("ok")) print(dic.get("sylar"))      # None print(dic.get("sylar", "牛B"))   # 牛B
5. 其他相关操作
 
dic = {"id": 123, "name": ‘sylar‘, "age": 18, "ok": "科比"}
print(dic.keys())   # dict_keys([‘id‘, ‘name‘, ‘age‘, ‘ok‘]) 不用管它是什么.当成list来用就行 for key in dic.keys():    print(key)
print(dic.values())     # dict_values([123, ‘sylar‘, 18, ‘科比‘]) 一样. 也当list来用 for value in dic.values():    print(value)
print(dic.items())  # dict_items([(‘id‘, 123), (‘name‘, ‘sylar‘), (‘age‘, 18), (‘ok‘, ‘科比‘)]) 这个东西也是list. 只不过list中装的是tuple for key, value in dic.items():  # ?? 这个是解构    print(key, value)
# 解构 a, b = 1, 2 print(a, b)
(c, d) = 3, 4 print(c, d)
e, f = [1, 2, 3]    # 解构的时候注意数量必须匹配 print(e, f)
三. 字典的嵌套 # 字典的嵌套 dic1 = {    "name": "汪峰",    "age": 18,    "wife": {        "name": ‘章子怡‘,        "age": 28    },    "children": [‘第一个毛孩子‘, ‘第二个毛孩子‘],    "desc": ‘峰哥不会告我吧. 没关系. 我想上头条的‘ }
print(dic1.get("wife").get("name")) print(dic1.get("children")) print(dic1.get("children")[1])
练习: dic1 = {    ‘name‘:[‘alex‘,2,3,5],    ‘job‘:‘teacher‘,    ‘oldboy‘:{‘alex‘:[‘python1‘,‘python2‘,100]}    } 1,将name对应的列表追加一个元素’wusir’。 2,将name对应的列表中的alex首字母大写。 3,oldboy对应的字典加一个键值对’老男孩’,’linux’。 4,将oldboy对应的字典中的alex对应的列表中的python2删除

作业:

,有如下变量(tu是个元祖),请实现要求的功能tu = ("alex", [11, 22, {"k1": ‘v1‘, "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])a.讲述元祖的特性;;答:元祖用()表示,是只读列表,可以索引切片,循环,迭代,但是不能删改.b.请问tu变量中的第一个元素"alex"是否可被修改  答:不可以被修改c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven"‘‘‘k2对应的值是列表型数据,可以改变.‘‘‘tu[1][2]["k2"]=["age","name","Seven"]print(tu)d.请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven"‘‘‘k3对应的值是元祖,不可以修改‘‘‘2, 字典dic, dic = {‘k1‘: "v1", "k2": "v2", "k3": [11, 22, 33]}

a.请循环输出所有的keyprint(dic.keys())b.请循环输出所有的valueprint(dic.values())c.请循环输出所有的key和valuefor a in dic.keys():    print(a)    print(dic.get(a))d.请在字典中添加一个键值对,"k4": "v4",输出添加后的字典dic["k4"]="v4"print(dic)e.请在修改字典中"k1"对应的值为"alex",输出修改后的字典dic["k1"]="alex"print(dic)f.请在k3对应的值中追加一个元素44,输出修改后的字典dic["k3"]=[11, 22, 33,44]print(dic)g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典dic["k3"]=[11,18, 22, 33,]print(dic)3,av_catalog = {    "欧美": {        "www.youporn.com": ["很多免费的,世界最大的", "质量一般"],        "www.pornhub.com": ["很多免费的,也很大", "质量比yourporn高点"],        "letmedothistoyou.com": ["多是自拍,高质量图片很多", "资源不多,更新慢"],        "x-art.com": ["质量很高,真的很高", "全部收费,屌丝请绕过"]    },    "日韩": {        "tokyo-hot": ["质量怎样不清楚,个人已经不喜欢日韩范了", "verygood"]    },    "大陆": {        "1024": ["全部免费,真好,好人一生平安", "服务器在国外,慢"]    }}

a, 给此["很多免费的,世界最大的", "质量一般"]列表第二个位置插入一个元素:‘量很大‘。av_catalog["欧美"]["www.youporn.com"]="很多免费的,世界最大的", "质量一般","量很大"print(av_catalog)b, 将此["质量很高,真的很高", "全部收费,屌丝请绕过"]列表的"全部收费,屌丝请绕过"删除。av_catalog["欧美"]["x-art.com"]="质量很高,真的很高"print(av_catalog)c, 将此["质量很高,真的很高", "全部收费,屌丝请绕过"]列表的"全部收  费,屌丝请绕过"删除。av_catalog["欧美"]["x-art.com"]="质量很高,真的很高"print(av_catalog)d, 将此["质量怎样不清楚,个人已经不喜欢日韩范了", "verygood"]列表的"verygood"全部变成大写。av_catalog["日韩"]["tokyo-hot"][1]=av_catalog["日韩"]["tokyo-hot"][1].upper()print(av_catalog)e, 给‘大陆‘对应的字典添加一个键值对‘1048‘: [‘一天就封了‘]av_catalog["大陆"]["1048"]="一天就封了"print(av_catalog)f, 删除此"letmedothistoyou.com": ["多是自拍,高质量图片很多", "资源不多,更新慢"]键值对。del av_catalog["欧美"]["letmedothistoyou.com"]print(av_catalog)g, 给此["全部免费,真好,好人一生平安", "服务器在国外,慢"]列表的第一个元素,加上一句话:‘可以爬下来‘av_catalog["大陆"]["1024"][1]="服务器在国外,慢,可以爬下来"print(av_catalog)4、有字符串"k:1|k1:2|k2:3|k3:4"处理成字典{‘k‘: 1, ‘k1‘: 2....}s=a.split("|")dic={}for s1 in s:      dic[s1.split(":")[0]]=int(s1.split(":")[1])print(dic)

5、元素分类有如下值li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。即: {‘k1‘: 大于66的所有值列表, ‘k2‘: 小于66的所有值列表}li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]li1=[]li2=[]dic={‘k1‘: "大于66的所有值列表," ,‘k2‘: "小于66的所有值列表"}for a in li:    if a >66:        li1.append(a)    else:        li2.append(a)dic["k1"]=str(li1)dic["k2"]=str(li2)print(dic)6、输出商品列表,用户输入序号,显示用户选中的商品

商品列表:goods = [{"name": "电脑", "price": 1999},         {"name": "鼠标", "price": 10},         {"name": "游艇", "price": 20},         {"name": "美女", "price": 998}, ]

要求:1:页面显示序号 + 商品名称 + 商品价格,如:1电脑19992鼠标10…2:用户输入选择的商品序号,然后打印商品名称及商品价格3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。4:用户输入Q或者q,退出程序。

明日默写内容。

1)字典的增删改查。2)过滤敏感字符代码的默写。

li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]l1 = []comment = input(‘请输入评论>>>‘)for i in li:    ifi in comment:comment = comment.replace(i, ‘*‘ * len(i))l1.append(comment)print(l1)

原文地址:https://www.cnblogs.com/cz007/p/9221198.html

时间: 2024-11-08 02:29:51

python学习内容.05的相关文章

[TimLinux] Python学习内容框架

以下内容主体来自<Python学习手册第四版>,大致整理出的方向 1. 第一部分:使用入门 介绍Python语法之前,先对Python的的各个方面进行一个比较宽广的介绍,包含对Python的一些问题,Python程序的运行方式,给出示例演示Python是如何运行的.这部分的学习,粗略的过一下即可,建议花时间在2小时内,总页数在60页左右.包含的章节如下: 2. 第二部分:类型与运算 这部分内容是Python语言的基础中的基础,对Python的内建基本数据类型进行了详细的介绍,需要精度的部分之一

Day 3 Python学习内容整理--注释及简单的输入输出

Part 1: 注释表示方法3种: msg = "我爱北京天安门!" print(msg) #print(msg)       #可以用作单行注释表示 ''' print(msg) '''          单引号*3或者双引号*3可以用来表示多行注释 """ print(msg) """       单引号*3或者双引号*3可以用来表示多行注释 Part 2: input用法: name = input("your

python学习篇05 - 字典 集合

1.字典 定义:字典是以 key :value 的形式来保存数据,用{} 来表示,存储的是 key : value 查找效率比较高(注:字典存储数据时,用的是hash值来存储,算法不能变(python) 数据必须是不可变的(可哈希),字典的key必须是可哈希的(不可变) 列表是可变的,不可哈希 元组是不可变的,可哈希的 2.字典的增删改查 增加 dic[新key] = 值 dic.setdefault()  有添加的功能,如果key存在,不添加 流程:判断新key是否在字典中存在,如果已经存在了

python学习笔记05:贪吃蛇游戏代码

贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下代码即可: #!/usr/bin/env python import pygame,sys,time,random from pygame.locals import * # 定义颜色变量 redColour = pygame.Color(255,0,0) blackColour = pygame.Color(0,0,0) whiteColour = pygame.Color(

第一天python学习内容

编程语言 高级 字节码 低级 机器码 python语言 javapython cpython 常用 pypy 最快 python程序: 1 终端:C:\python36\python.exe c:\1.py 解释器: 2 文件型 #/usr/bin/u/ubv/a python Linux python 1.py ./1.py 加权限 3 编码 #/usr/bin/u/ubv/a python #-*- coding:utf-8 -*- 2.7要用 补充:ASCII码值 8位只能表示英文字母 U

Day 1 Python学习内容整理--开课介绍与电脑简史

Part 1: 听老师Alex Li的简介,Python在知名公司的应用,Python擅长的领域,未来的前景和目前的收入,Go语言的前景,Python的入职工资,老学员的offer分享,课程奖励 Part 2: 计算机的历史: 手指算数,算筹,算盘, 1630年英国数学家奥特莱德发明了刻度尺,刻度尺的出现,游标卡尺的原型: 18世纪末,瓦特加了一个滑标用来存储中间结果,1850年后开始流行至1960年: 1623年帕斯卡出生,1642年,帕斯卡19岁时发明了有史以来第一台机械计算机 1662帕斯

Python学习笔记05

? 类 继承:单继承,多继承 方法:self开头,类似C#中的this 属性:直接写变量 对象:使用类名() 构造 __init__():构造函数 ? #多继承 class?A(object): ????............. class?B(object): ????............. class?C(A,B): ? ? class RcdBase(object): ? recordID = "" ? def __init__(self): print 'call Rcd

python学习之基础内容

python基础内容① 什么是python? -一种计算机语言,计算机语言分为 -高级语言:python.java.Ruby.C#.C++...... -基础语言:C语言.汇编 -计算机可以直接执行基础语言,但是基础语言比较复杂,敲代码很麻烦 -高级语言会自动转化为基础语言,再提供给计算机执行. 安装好python后,print("hello world") -python执行文件后缀名可以是任意的 -但是为了pycharm的执行方便,约定俗称使用“.py”后缀 python 的执行方

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr