字典的内置方法

作用

  • 当列表中有很多值的时候,就会显得很乱,所以有了字典

定义方式

  • '{}'内以逗号分隔开多个键值对key:value的值,key一般为字符串,对值具有描述意义,value可以是任意数据类型的值
myself_dict = {'name': 'lj', 'age': 21, 'weight': 130, 'hobby_list': ['chi', 'he', 'wan', 'le'],}
d1 = {}
d2 = dict() # 看得懂就可以,不要用这个写
d = dict(name='lj', age=21, weight=130)

方法

优先掌握

1.按key存取值, 可存可取

print(myself_dict['name'])
myself_dict['age'] -= 1
print(myself_dict)

lj

{'name': 'lj', 'age': 20, 'weight': 130, 'hobby_list': ['chi', 'he', 'wan', 'le']}

2.长度len

  • 一个键值对是一个长度
print(len(myself_dict))

4

3.成员运算, in 和 not in

  • 比较的是键而不是值
print('name' in myself_dict)
print('lj' in myself_dict)

True

False

4.删除 del

  • 参数填键,不填会报错,找不到也会报错
  • 和pop的区别是del可以删除整个变量
del myself_dict['weight']
print(myself_dict)

{'name': 'lj', 'age': 20, 'hobby_list': ['chi', 'he', 'wan', 'le']}

5.删除 pop

  • 参数填键,不填会报错,找不到也会报错
myself_dict.pop('age')
print(myself_dict)

{'name': 'lj', 'hobby_list': ['chi', 'he', 'wan', 'le']}

6.keys & values & items

  • 返回的值类似于列表,但不是列表,以后再讲
print(myself_dict.keys())
print(myself_dict.values())
print(myself_dict.items())

dict_keys(['name', 'hobby_list'])

dict_values(['lj', ['chi', 'he', 'wan', 'le']])

dict_items([('name', 'lj'), ('hobby_list', ['chi', 'he', 'wan', 'le'])])

7.for 循环

for i in myself_dict:
print(i)
print()
for i in myself_dict.keys():
print(i)
print()
for y in myself_dict.values():
print(y)
print()
for i in myself_dict.items():
print(i)
print()
for i, y in myself_dict.items():
print(i, y)
print()

name

hobby_list

name

hobby_list

lj

['chi', 'he', 'wan', 'le']

('name', 'lj')

('hobby_list', ['chi', 'he', 'wan', 'le'])

name lj

hobby_list ['chi', 'he', 'wan', 'le']

需要掌握

1.get

  • 和直接用键取值的区别在于: 如果键不存在,不会报错,默认返回None,可以设定返回值
print(myself_dict.get('name'))
print(myself_dict.get('asda'))
print(myself_dict.get('asda', 123))

lj

None

123

2.update

  • 将update中的字典更新到原字典中,有就更新,没有就添加
  • update中必须是一个字典
one_dict = {'one': 1}
myself_dict.update(one_dict)
myself_dict.update({'name': 'ljl'}) print(myself_dict)

{'name': 'ljl', 'hobby_list': ['chi', 'he', 'wan', 'le'], 'one': 1}

3.fromkeys

  • 无视方法前面的字典内容,把给定列表内的元素取出来当成key,然后使用同一个value新建一个字典
from_dict1 = dict.fromkeys([1, 2, 3], 'num')
from_dict2 = myself_dict.fromkeys([1, 2, 3], 'num')
print(from_dict1)
print(from_dict2)

{1: 'num', 2: 'num', 3: 'num'}

{1: 'num', 2: 'num', 3: 'num'}

4.setdefault

  • 如果字典中有该key的话,则该key对应的值不变,如果没有,就添加一个
  • 和update()区别在于只能参数是填写键和值(值默认是None),不能填写一个字典进去.
myself_dict.setdefault('a', 1)
myself_dict.setdefault('name', 'lj')
print(myself_dict)

{'name': 'ljl', 'hobby_list': ['chi', 'he', 'wan', 'le'], 'one': 1, 'a': 1}

存储一个值or多个值

  • 多个值

有序or无序

  • 无序

可变or不可变

  • 可变

    注意:字典的键是惟一的,但值不是惟一的,所以大多的方法都是使用键作为参数

集合的内置方法

作用

  • 储存多个值

定义方式

  • '{}'内以逗号隔开多个元素,元素的类型必须可哈希(不可变类型)
num_set = {1, 2, 3, 'a'}

# 创建空集合的方式,不要用{},那是dict
emp_set = set()

方法

1.去重 & 乱序

  • 集合内的元素具有唯一性,并且是无序的
  • 自己的猜想:集合内的元素可能并不是完全无序的,因为相同数据的打印结果是相同的.所以可能只是按照程序内部的规则来进行排序
num_set = {3, 2, 3, 2, 1, 'a'}
print(num_set)

{1, 2, 3, 'a'}

2.长度len, 极值max, min

  • 极值只能在元素全是数字时进行比较
print(len(num_set))

4

3.成员运算 in 和 not in

print(3 in num_set)

True

4.循环

for i in num_set:
print(i)

1

2

3

a

5.并集 union '|'

set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1 | set2)
print(set1.union(set2))
{1, 2, 3, 4}
{1, 2, 3, 4}

6.交集 intersection '&'

print(set1 & set2)
print(set1.intersection(set2))
{2, 3}
{2, 3}

7.差集 difference '-'

print(set1 - set2)
print(set1.difference(set2))
{2, 3}
{2, 3}

8.对称差集 symmetric_difference '^'

print(set1 ^ set2)
print(set1.symmetric_difference(set2))
{1, 4}
{1, 4}

9.父集 issuperset '>' ">="

print(set1 > set2)
print(set1.issuperset(set2))
False
False

10.子集 issubset '<' '<='

print(set1 < set2)
print(set1.issubset(set2))
False
False

11.add

set1.add(5)
print(set1)
{1, 2, 3, 5}

12.remove

set1.remove(5)
print(set1)
{1, 2, 3}

13.difference_update

  • 从这个集合中另一个集合中有的所有元素
set1.difference_update(set2)
print(set1)
{1}

14.discard

  • 和remove的区别在于如果值不存在则返回None,不会报错
print(set1.discard(2))
None

15.isdisjoint

  • 如果两个集合的交集为空,返回True
print(set1.isdisjoint(set2))

True

16.clear & copy

  • clear只是清空元素,不删除地址
  • copy浅拷贝

存储一个值or多个值

  • 多个值

有序or无序

无序

可变or不可变

可变

冰冻集合

  1. 冰冻集合就是不可以进行任何修改的集合
  2. frozenset也是一个特殊的集合类型
  3. 除了不能修改外,拥有集合的所有特性
# 创建
fs = frozenset()
print(type(s))
print(s)
<class 'frozenset'>
frozenset()

day09-2 字典,集合的内置方法的更多相关文章

  1. day07-列表类型/元组类型/字典类型/集合类型内置方法

    目录 列表类型内置方法 元组类型内置方法 字典类型内置方法 集合类型内置方法 列表类型内置方法 用来存多个元素,[]内用逗号隔开任意数据类型的元素 1. list()强制类型转换 print(list ...

  2. python元组-字典-集合及其内置方法(下)

    列表补充 补充方法 清空列表 clear # clear 清空列表 l = [1, 2, 3, 4, 4] print(l.clear()) # clear没有返回值(None) print(l) # ...

  3. [Python3] 015 冰冻集合的内置方法

    目录 0. 前言 英文名 元素要求 使用限制 返回 方法数量 1. 如何查看 frozenset() 的内置方法 2. 少废话,上例子 2.1 copy() 2.2 difference() 2.3 ...

  4. [Python3] 014 集合的内置方法

    目录 1. Python3 中如何查看 set() 的内置方法 2. 少废话,上例子 (1) add() (2) 又见清理大师 clear() (3) 又见拷贝君 copy() (4) 找茬君 dif ...

  5. python字典操作和内置方法

    一 字典基本介绍 python中只有字典是映射结构,通过key取值,并且key是不可变数据类型,而value可以是任意数据类型. 字典通过一个花括号,里面存放key:value的数据结构来定义.理论上 ...

  6. what's the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法

    计算机可以进行的运算有很多种,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.字符串和列表的算数运算只能用+和*,字典没有顺序,所以不能进行算数运算和比较运算.比较运算中= ...

  7. day007 列表类型、元祖类型、 字典类型、 集合类型的内置方法

    目录 列表数据类型的内置方法 作用 定义方式 优先掌握的方法 需要掌握的方法 元祖类型的内置方法 作用 定义方式 优先掌握的方法(参考列表方法) 字典类型的内置方法 作用 定义方式 优先掌握的方法 需 ...

  8. Day 07 数据类型的内置方法[列表,元组,字典,集合]

    数据类型的内置方法 一:列表类型[list] 1.用途:多个爱好,多个名字,多个装备等等 2.定义:[]内以逗号分隔多个元素,可以是任意类型的值 3.存在一个值/多个值:多个值 4.有序or无序:有序 ...

  9. python之字符串,列表,字典,元组,集合内置方法总结

    目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...

随机推荐

  1. Java什么时候用static,public,private,protected?

    这么说吧,假如你是一个类: public表示你愿意其他人看见你的物品(字段.属性),或者你愿意帮别人做事(方法): private表示你不愿意其他任何人看见你的私人物品,也不愿意帮任何人做事: pro ...

  2. JsonPluginsUtil

    package utils; import java.lang.reflect.Field;import java.text.SimpleDateFormat;import java.util.Arr ...

  3. Java常用类(I)-时间和日期

    java开发中,常涉及到时间的处理,这里就做一个总结,同样也是一个笔记. 相关类及概念 1. java.util.Date:表示特定的瞬间,精确到毫秒.由于API 不易于实现国际化,日期和时间字段之间 ...

  4. BZOJ 1266: [AHOI2006]上学路线route Floyd_最小割

    十分简单的一道题. 图这么小,跑一边 Floyd 就得到第一问最短路径的答案. 考虑第二问怎么求:我们可以先将最短路径组成的图从原图中抽离出来,构成新图 $G$. 我们发现,只要 $G$ 的起点与终点 ...

  5. Vue2实例中的data属性三种写法与作用

    <script src="https://unpkg.com/vue/dist/vue.js"></script> <div id="app ...

  6. Java 分布式事务

    0 引言 本文主要介绍java中分布式事务以及对应的解决方案. 1 分布式事务产生的原因 1.1 数据库分库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理在此 ...

  7. pip是用代理

    内网访问外网时,需要通过vpn访问,但是pip貌似不能是用vpn访问外网.直接度娘: windows下: set http_proxy=http://代理服务器:端口 不行可以试试下面的: set h ...

  8. 16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  9. C语言基础 (11) 结构体 ,共用体 枚举 typedef

    1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...

  10. 在小程序中实现全局混入,以混入的形式扩展小程序的api

    GitHub: https://github.com/WozHuang/mp-extend 相关文章: 小程序全局状态管理,在页面中获取globalData和使用globalSetData 通过页面预 ...