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的更多相关文章

  1. Python基础Day5

    一.字典 ①字典是python的基础数据类型之一 ②字典可以存储大量的数据,关系型数据 ③字典也是python中唯一的映射类的数据类型 字典是以键值对的形式存在的,{键:值} 字典的键必须是不可变的数 ...

  2. 第五章:Python基础の生成器、迭代器、序列化和虚拟环境的应用

    本课主题 生成器介紹和操作实战 迭代器介紹和操作实战 序例化和反序例化 Json 和 Pickle 操作实战 字符串格式化的应用 创建虚拟环境实战 本周作业 生成器介紹和操作实战 什么是生成器,生成器 ...

  3. Python基础学习总结(持续更新)

    https://www.cnblogs.com/jin-xin/articles/7459977.html 嗯,学完一天,白天上班,眼睛要瞎了= = DAY1 1,计算机基础. CPU:相当于人的大脑 ...

  4. python基础-基础知识(包括:函数递归等知识)

    老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...

  5. Python基础 小白[7天]入门笔记

    笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...

  6. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  7. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  8. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  9. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

随机推荐

  1. maven项目打包到本地库 两种方式

    方式一 1.项目根路径下 maven clean package 或者 maven package ,根据是否需要跳过代码中的测试代码 加上 -DskipTests 2.mvn install:ins ...

  2. 数据库(十一):Navicat可视化工具

    进击のpython ***** 数据库--Navicat可视化工具 那命令行敲了那么久,难免影响开发效率 所以说就出现了一款可视化开发工具Navicat 下载位置:https://pan.baidu. ...

  3. 使用java实现希表的基础功能

    用java代码完成哈希表数据结构的简单实现, 以公司雇员的添加修改作为模拟实例 具体代码如下: package com.seizedays.hashtable; import java.util.Sc ...

  4. LQB2018A09倍数问题

    这个题,第一反应一定是三个for嵌套加一个max比较. 超级无敌大暴搜 #include <iostream> #include <string> #include <s ...

  5. SpringBoot环境下使用测试类注入Mapper接口报错解决

    当我们在进行开发中难免会要用到测试类,而且测试类要注入Mapper接口,如果测试运行的时候包空指针异常,看看测试类上面的注解是否用对! 正常测试我们需要用到的注解有这些: @SpringBootTes ...

  6. linux下快速列出局域网中所有主机名(计算机名)的脚本

    最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本 脚本会扫描局域网arp表中所有ip,并尝试解析 ...

  7. vue脚手架创建项目名字报错

    vue inti webpack TimeManger 报错 Sorry, name can no longer contain capital letters 原来这个capital是大写的意思,上 ...

  8. 因为不知道Java的CopyOnWriteArrayList,面试官让我回去等通知

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  9. CF 633 div1 1338 B. Edge Weight Assignment 构造

    LINK:Edge Weight Assignment 这场当时没打 看到这个B题吓到我了 还好当时没打. 想了20min才知道怎么做 而且还不能证明. 首先考虑求最小. 可以发现 如果任意两个叶子节 ...

  10. demo3同通讯录展示的方式分组排序

    按A-Z顺序分组展示 有些项目中会需要这样的需求.形成类似于上述的界面.类似于通讯录里边的排序.实现的效果:所有的数据展示的时候,能够分组展示.顺序按照A-Z的书序进行排列.如果不是以A-Z开头,则默 ...