博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day09-2 字典,集合的内置方法
阅读量:5738 次
发布时间:2019-06-18

本文共 4074 字,大约阅读时间需要 13 分钟。

目录

字典的内置方法

作用

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

定义方式

  • '{}'内以逗号分隔开多个键值对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'] -= 1print(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'}# 创建空集合的方式,不要用{},那是dictemp_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))
FalseFalse

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

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

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)
frozenset()

转载于:https://www.cnblogs.com/lucky75/p/10920354.html

你可能感兴趣的文章
centos5.9使用RPM包搭建lamp平台
查看>>
关于C#面向对象2
查看>>
Javascript String类的属性及方法
查看>>
vim编辑器如何添加或删除多行注释
查看>>
[LeetCode] Merge Intervals
查看>>
iOS开发-按钮的基本使用
查看>>
在QT和SDL搭建的框架中使用OPENGL在SDL窗口上进行绘图
查看>>
REST技术第三步 @BeanParam的使用
查看>>
SharePoint 读取 Site Columns 的数据并绑定到DropdownList
查看>>
使用 axios 详解
查看>>
通信基站(dfs回溯,思维)
查看>>
nginx web加密访问
查看>>
iOS - Regex 正则表达式
查看>>
第 68 章 Logical Volume Manager (LVM)
查看>>
膝盖中了一箭之康复篇-第八个月暨2月份目标总结
查看>>
IPA提交APPStore问题记录(一)
查看>>
有利于seo优化的网站地图不能取巧
查看>>
快照产品体验优化
查看>>
ASCII
查看>>
ibatis SqlMap not found
查看>>