初识基础数据类型 dict,set

字典

? 字典(dict)是python中唯一一个映射类型,在python中key是唯一的,在保存的时候,根据key计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为hash算法.所以,在dict中存储的键值对中的key必须是可哈希的.(可以改变的都是不可哈希的,那么可哈希的就意味着不可变.)这是为了能准确地计算内存地址而规定的.还有,dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片工作,只能通过key来获取dict中的数据.

  • 已知的可哈希(不可变)的数据类型:int,bool,str,tuple;不可哈希(可变)的数据类型:list,dict,set

    • 顺便回忆:可迭代的数据类型:除了int和bool,其他都可迭代
  • ? 字典名[键] = 值 无则添加,有则修改

    ? 字典名.setdefault(键,值): 无则添加,有则不添加

  • ? 字典名.pop(键) 通过键进行删除.原地删除,返回的也是被删除的值

    ? 字典名.popitem() 随机删除 python3.6默认删除最后一个,返回值是被删除的键值对

    ? 字典名.clear() 清空

    ? del 字典名 删除整个容器

    ? del 字典名[键] 通过键进行删除

    ? 字典中没有remove

  • ? 字典名[键] = 值 无则添加,有则修改

    ? 字典名.update(新字典名) 当新字典中没有源字典的键值对时就添加到源字典中,有就修改

  • ? 字典名.get(键) 查询不到返回None

    ? 字典名.get(键,自定内容) 查询不到返回自定内容

    ? 字典名.setdefault(键,自定内容) 查询不到返回自定内容,没有自定内容返回None

    ? 字典名[键] 查询不到报错

for i in dic:     # 查看所有的键
 print(i)

for i in dic:     # 查看所有的值
 print(dic.get(i))

print(dic.keys())     # 获取到的是一个高仿列表
print(dic.values())       # 高仿列表支持迭代,不支持索引
print(dic.items())        # 这个高仿列表存放的是多个元组,元组中第一个元素是键,第二个元素是值
  • 其他方法:

    dic = {}
    dic.fromkeys("abc",[])   # 批量创建键值对 "a":[],"b":[],"c":[]
    print(dic)        # {}
    dic1 = dic.fromkeys("abc",[])
    print(dic1)       # {'a': [], 'b': [], 'c': []}
    # fromkeys 第一个人参数必须是可迭代对象,会将可迭代对象进行迭代,成为字典的键,另一个参数是值(这个值是共用的);共用的值是可变数据类型就会有坑,不可变数据类型就没事
  • 解构

    ? 解构可以将内容分别赋值到变量中.

    a,b = b,a   一行代码进行数值交换
    
    a,b = 1,2
    print(a,b)        # 1 2
    
    a,b = ('汪峰':'北京','王菲':'天后')
    print(a,b)        # 汪峰 王菲
    
    for k,v in dic.items():
        print('这是键:',k)
        print('这是值:',v)
    
    dic = {"key1":2,"key2":4}
    for i in dic.items():
        a,b = i  # 自己写的解构
        print(a)
        print(b)
    
    for a,b in dic.items():
        print(a)
        print(b)

集合

? 集合set 是一个没有值的字典.因为集合的元素要求是不可变且唯一,我们就利用它的唯一来做去重

? 集合是无序,可变的数据类型

  • s = set()
    s.add("alex")
    print(s.add("alex"))   # None
    
    s.update("wusir")       # 迭代添加
    print(s.update("wusir"))  # None
    print(s)
    
    set("wusir")  # 迭代添加
    print(s)
  • s = {100,0.1,0.5,1,2,23,5,4}
    s.remove(4)    # 通过元素删除
    print(s)
    s.clear()  # 清空
    s.pop()      # 随机删除 (最小的)
    print(s)
  • 改:先删再加
  • 查:for循环
  • 其他操作
    # 其他操作:
    s = {1,23,9,4,5,7}
    s1 = {1,2,3,4,5}
    
    # 差集 -
    print(s - s1)  # {9, 23, 7}
    print(s1 - s)  # {2,3}
    
    # 交集  &
    print(s & s1)  # {1,4,5}
    
    # 并集  |(管道符)
    print(s | s1)  # {1,2,3,23,4,5,9,7}
    
    # 反交集  shift + 6 ==  ^
    print(s ^ s1)   # {2,3,23,9,7}
    
    s = {1,23,9,4,5,7}
    s1 = {1,4,5}
    
    # 子集  返回的一个布尔值
    print(s > s1)  # True
    
    # 父集(超集)
    print(s1 < s)  # True
    
    print(frozenset({1,23,4,5}))   # 冻结集合

原文地址:https://www.cnblogs.com/lingshuai/p/11565049.html

时间: 2024-10-09 21:40:53

初识基础数据类型 dict,set的相关文章

记录我和她私会的那些日子 之 初识基础数据类型

基础数据类型 1.整型 int ? python3中都是整型 ? python2中有整型和长整型(long) 2. 字符串 str : ? 在python中凡是用引号引起来的都是字符串(不可变,有序) 索引(下标) 切片:顾头不顾尾,步长决定查找的方向 字符串的方法: 全部大写/全部小写:不是修改源数据,因为字符串是不可变的 判断是不是以什么开头/结尾:startswith(判断体,起始位置,终止位置) 统计/计数: 脱:默认脱头尾两端的空格,换行符,制表符 分割:默认分割位置(空格,换行符,制

腾讯课堂——基础数据类型(dict字典)

初识字典 标准类型 数字 字符串 列表 字典 元组 字典是Python语言中唯一的映射类型. 定义:{key1:value1,key2:value2}    1.键与值用冒号":"分开:    2.项与项用逗号","分开: 特性:  1.key-value结构    2.key必须可hash.且必须为不可变数据类型.必须唯一    3.可存放任意多个值.可修改.可以不唯一    4.无序 字典的创建 person = {"name": "

初识基础数据类型 list,tuple

列表 ? 列表 list 可变(支持索引),有序(原地修改) ? 需要存储大量的数据,且需要这些数据有序的时候. ? 列表有索引,切片和步长.索引和字符串不一样,列表可以通过索引修改,字符串因为不可变,如果也通过索引修改会报错 增 append 追加 insert 插入 insert(位置,插入内容) 位置:新内容在此位置之前 extend 迭代添加 删 ? remove 通过元素名称删除 ? pop 通过索引删除元素(默认删除最后一个:"弹出") ? clear 清空列表 ? del

『Python基础』第4节:基础数据类型初识

本节只是对基础数据类型做个简单介绍, 详情会在之后慢慢介绍 什么是数据类型? 我们人类可以分清数字与字符串的区别, 可是计算机不能. 虽然计算机很强大, 但在某种程度上又很傻, 除非你明确告诉它数字与字符串的区别. 因此, 在每个编程语言中都有叫 数据类型 的东西, 其实就是对常用的数据类型进行了明确的划分. Python中常用的数据类型有很多种, 本节只介绍3中: 数字.字符串.布尔类型 整数类型 - int 在32位机器上,整数的位数为32位,取值范围为-231-231-1,即-214748

Python 之路 Day02 -基础数据类型及编码详解

  基础篇 本章大纲: 字符编码和解释器编码详解 变量命名规则 基础数据类型(一) int 基础数据类型(二)  string 基础数据类型(三) bool 基础数据类型(四) list 基础数据类型(五) tuple 基础数据类型(六) dict 基础数据类型(七) set 补充可迭代对象的循环连接及enumerate输出 字符编码和解释器编码详解 一,编码的重要性: 1.1 文件编码和字符编辑编码及读取编码 #!/usr/bin/env python #-*- coding:utf-8 -*

【转】Py西游攻关之基础数据类型

[转]Py西游攻关之基础数据类型 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种 一 Number(数字) 1.1 数字类型的创建 a=10 b=a b=666 print(a)#10 print(b)#666 注意这里与C的不同: #include <stdio.h> vo

python基础二(基础数据类型)

一,引子. 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字 字符串 列表 元组 字典 集合 二基础数据类型. 2.1数字int. 数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以: #bit_length() 当十进制用二进制表示时,最少使用的位数 v = 11 data = v.bit_length() print(data) 2.2布尔值bool. 布尔值就两种:T

02-python基础二(基础数据类型)

一,引子. 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字 字符串 列表 元组 字典 集合 二基础数据类型. 2.1数字int. 数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以: #bit_length() 当十进制用二进制表示时,最少使用的位数 v = 11 data = v.bit_length() print(data) 2.2布尔值bool. 布尔值就两种:T

python基础(二)基础数据类型

一,引子. 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字 字符串 列表 元组 字典 集合 二基础数据类型. 2.1数字int. 数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以: #bit_length() 当十进制用二进制表示时,最少使用的位数 v = 11 data = v.bit_length() print(data) 2.2布尔值bool. 布尔值就两种:T