python基础 Day5
python Day5
字典
其他数据类型的缺点
- 列表可以存储大量的数据,但是关联性不强。
- 列表的查询速度比较慢
其容器的数据类型为dict
其数据类型的分类
- 可变(不可哈希)的数据类型:list dict set(集合)
- 不可变(可哈希)的数据类型:str bool int tuple(不可操控原来的数据,都是建立一个新的字符串
字典的格式
字典:{}括起来,以键值对形式储存的容器数据类型
dict1={"佛祖":
{"name":"如来佛祖","sex":"男"}}
字典是以key(键)和value(值)成对组成的,但是其键必须是不可变的数据类型组成的。(int,str 比较常用 bool tuple不常用)
值可以是任意数据类型,对象
字典3.5X版本之前(包括3.5)是无序的
字典3.6X会按照初次建立字典的顺序排列,学术上不认为是有序排列的。
3.7以后都是有序排列的
字典优点:查询插入速度快,存储关联性的数据
字典的缺点:以空间换时间(字典需要占用大量的内存,内存浪费多,其实使用hash算法通过key值计算需要查找位置的)
字典的创建方式
方法一
dic=dict((("one",1),("two",2),("three",3)))
print(dic)
#结果:{'one': 1, 'two': 2, 'three': 3}
方法二
dic=dict(one=1,two=2,three=3)
print(dic)
#结果:{'one': 1, 'two': 2, 'three': 3}
方法三(官方方法)
dic=dict({"one":1,"two":2,"three":3})
print(dic)
#结果:{'one': 1, 'two': 2, 'three': 3}
字典的增删改查
增
方法一
#如果初始的字典没有需要加入的key,则是真假,如果已经含有了key,重新赋值就是修改
dic={"name":"如来佛祖","sex":"man"}
dic['age']="无限"
print(dic)
#结果 {'name': '如来佛祖', 'sex': 'name', 'age': '限'}
方法二
dic={"name":"如来佛祖","sex":"man"}
dic.setdefault("hobby","洗脑")
print(dic)
#结果 {'name': '如来佛祖', 'sex': 'name', 'hobby': '洗脑'}
删 pop
方法一 pop 同样能返回删除参数
dic={"name":"如来佛祖","sex":"man"}
ret=dic.pop("sex","没有此键")#设置第二个参数则无论字典中有无此键都不会报错
print(dic)
#结果 {'name': '如来佛祖'}
方法二 clear 清空
dic={"name":"如来佛祖","sex":"man"}
ret=dic.clear()
print(dic)
#结果 {}
方法三 del 没有pop好用,遇到字典中没有此键就会报错
dic={"name":"如来佛祖","sex":"man "}
del dic["sex"]
print(dic)
#结果 {'name': '如来佛祖'}
改 在增加的地方已经说过
查
方法一 通过key的提示将value值查找出来
dic={"name":"如来佛祖","sex":"name","hobby_list":["假仁假义","大骗子","印度邪教"]}
print(dic["hobby_list"])
#结果 ['假仁假义', '大骗子', '印度邪教']
方法二 get
#get这个方法的获取更优势,理由同pop一样
dic={"name":"如来佛祖","sex":"name","hobby_list":["假仁假义","大骗子","印度邪教"]}
ls=dic.get("hobby_list")#同pop设置第二参数则字典有无此键都不会报错
print(ls)
#结果 ['假仁假义', '大骗子', '印度邪教']
方法三 keys()
#查出所有keys值
#这个数字类型可以转化为列表
dic={"name":"如来佛祖","sex":"name","hobby_list":["假仁假义","大骗子","印度邪教"]}
print(dic.keys())
#dict_keys(['name', 'sex', 'hobby_list'])
#将其转化为列表
dic={"name":"如来佛祖","sex":"name","hobby_list":["假仁假义","大骗子","印度邪教"]}
print(list(dic.keys()))
#结果 ['name', 'sex', 'hobby_list']
方法四 items
#将字典的keys和values值分别取出来,这里功能用到了元组的拆包
dic={"name":"如来佛祖","sex":"name","hobby_list":["假仁假义","大骗子","印度邪教"]}
for key,values in dic.items():
print(key,values)
#结果 name 如来佛祖
# sex name
# hobby_list ['假仁假义', '大骗子', '印度邪教']
练习
1.如content=input("输入内容:")用户输入 5+9+6 +12 +13然后进行计算
content=input("请输入需要的内容:")
list=content.split("+")
result=0
for i in list:
result+=int(i)
print(result)
2.计算用户输入的内容中有几个整数(以个位数为单位)如:content=input("请输入内容:")如sfhlsdfh3445fdlsfh+=455f
content=input("请输入需要的内容:")
number=0
for i in content:
if i.isdecimal():
number+=1
print(number)
3.判断一句话是否为回文。回文:正反念和反正念是一样的。列如,上海自来水来自海上
content1=content[::-1]
if content==content1:
print("这是回文")
else:
print("这不是回文")
4.找出li列表中的元素,移除每个(for)元素的空格,并找出一“A"或者”a"开头,并以"C"结尾的所有元素,并添加到一个新的列表中,最后循环打印这个列表。
li=["TaiBai ","alexC","AbC ","egon","riTiAn","WuSir","aqc"]
newli=[]
for i in li:
i1=i.strip()
# if i1.startswith("A") or i1.startswith("a") and i1.endswith("C"):
if i1.upper().startswith("A") and i1.endswith("C"):
newli.append(i1)
for j in newli:
print(j)
5.如下列表
li=[1,3,4,"xiaoming",[3,7,8,"taiwan"],5]
循环打印列表中的每个元素,遇到列表则再循环打印出它里面元素
li=[1,3,4,"xiaoming",[3,7,8,"taiwan"],5]
for i in li:
if type(i)==list:
for j in i:
print(j)
else:
print(i)
python基础 Day5的更多相关文章
- Python基础Day5
一.字典 ①字典是python的基础数据类型之一 ②字典可以存储大量的数据,关系型数据 ③字典也是python中唯一的映射类的数据类型 字典是以键值对的形式存在的,{键:值} 字典的键必须是不可变的数 ...
- 第五章:Python基础の生成器、迭代器、序列化和虚拟环境的应用
本课主题 生成器介紹和操作实战 迭代器介紹和操作实战 序例化和反序例化 Json 和 Pickle 操作实战 字符串格式化的应用 创建虚拟环境实战 本周作业 生成器介紹和操作实战 什么是生成器,生成器 ...
- Python基础学习总结(持续更新)
https://www.cnblogs.com/jin-xin/articles/7459977.html 嗯,学完一天,白天上班,眼睛要瞎了= = DAY1 1,计算机基础. CPU:相当于人的大脑 ...
- python基础-基础知识(包括:函数递归等知识)
老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...
- Python基础 小白[7天]入门笔记
笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
随机推荐
- maven项目打包到本地库 两种方式
方式一 1.项目根路径下 maven clean package 或者 maven package ,根据是否需要跳过代码中的测试代码 加上 -DskipTests 2.mvn install:ins ...
- 数据库(十一):Navicat可视化工具
进击のpython ***** 数据库--Navicat可视化工具 那命令行敲了那么久,难免影响开发效率 所以说就出现了一款可视化开发工具Navicat 下载位置:https://pan.baidu. ...
- 使用java实现希表的基础功能
用java代码完成哈希表数据结构的简单实现, 以公司雇员的添加修改作为模拟实例 具体代码如下: package com.seizedays.hashtable; import java.util.Sc ...
- LQB2018A09倍数问题
这个题,第一反应一定是三个for嵌套加一个max比较. 超级无敌大暴搜 #include <iostream> #include <string> #include <s ...
- SpringBoot环境下使用测试类注入Mapper接口报错解决
当我们在进行开发中难免会要用到测试类,而且测试类要注入Mapper接口,如果测试运行的时候包空指针异常,看看测试类上面的注解是否用对! 正常测试我们需要用到的注解有这些: @SpringBootTes ...
- linux下快速列出局域网中所有主机名(计算机名)的脚本
最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本 脚本会扫描局域网arp表中所有ip,并尝试解析 ...
- vue脚手架创建项目名字报错
vue inti webpack TimeManger 报错 Sorry, name can no longer contain capital letters 原来这个capital是大写的意思,上 ...
- 因为不知道Java的CopyOnWriteArrayList,面试官让我回去等通知
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...
- CF 633 div1 1338 B. Edge Weight Assignment 构造
LINK:Edge Weight Assignment 这场当时没打 看到这个B题吓到我了 还好当时没打. 想了20min才知道怎么做 而且还不能证明. 首先考虑求最小. 可以发现 如果任意两个叶子节 ...
- demo3同通讯录展示的方式分组排序
按A-Z顺序分组展示 有些项目中会需要这样的需求.形成类似于上述的界面.类似于通讯录里边的排序.实现的效果:所有的数据展示的时候,能够分组展示.顺序按照A-Z的书序进行排列.如果不是以A-Z开头,则默 ...