python 成员变量 字典_python基础(十一、高级变量类型-字典、集合)

13.高级变量类型

5)字典

(1)字典的定义:dictionary(字典)是除列表以外Python之中最灵活的数据类型。字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息。

①字典和列表的区别:

(a)列表是有序的对象集合

(b)字典是无序的对象集合

②字典的语法结构:

(a)字典用 {} 定义

(b)字典使用键值对存储数据,键值对之间使用“,”分隔

键key是索引,值value是数据,键和值之间使用“:”分隔。

键必须是唯一的,必须可哈希 -> 不可变类型(字符串、数字或元组);值可以取任何数据类型

0ced865a0aac4de5c906920933e0eddf.png

d7a9ff770f038a6be87a444378050400.png

(2)字典常用操作

在ipython3中定义一个字典,例如:xiaoming = {}。输入xiaoming.按下TAB键,ipython会提示字典能够使用的函数如下:

2a86d322c3e34ad3851bc05a85d67641.png

①取值:dict[key]、dict.get(key,默认值)

(a)dict[老key],key不存在会报错。

a9373e5c0372888bf976eee4a448138d.png

(b)使用get方法取值:dict.get(key,默认值)

key不存在返回None,不会报错

0492c7c11c0392f4dea80ba494c705b4.png

使用get方法取值:键值不存在返回,可以返回默认值

fbac3b3bdf5c700eaa19e6350ef5dca3.png

②增加/修改dict[key]、dict.setdefault(key:value)、

(a)增加:dict[新key]=新value,key不存在会报错。

(b)修改:dict[老key]=新value

b38cd2bd9d3c66c91a2d83bee3a7c84c.png

(c)使用setdefault方法新增,当字典中有该键时,不修改原值。当字典中没有该键时,才能新增

3a693153b84a5dfbd1b49a2bf6346e12.png

不论是否新增,执行完setdefault方法后,会使用key把value查询出来

adcdedebc348f53bd9c3b2ad0aa0d1d1.png

setdefault应用:将列表中大于等于66的数字放入字典的key1对应的列表中,将小于66的数据存入key2对应的列表中。

列表:lst = [11, 22, 33, 44, 55, 66, 77, 88]

效果:dic = {"key1": [66, 77, 88], "key2": [11, 22, 33, 44, 55]}

方法1:

f20eead424abdf321bbf5fcb77c71248.png

方法2:

4e6d0a6433d08b3d3348d1b959f5552d.png

③删除dict.pop(key)、 dict.popitem()、del、 dict.clear()

(a)dict.pop(key)删除指定键值对

a1464ebc16c77e3a77a0b7652747f4e9.png

(b)dict.popitem()删除最后一个键值对

39f756eb9146624c02f67ee1874f70dd.png

(c)del dict[key]

8be291c06db5c635831ce5e2592a75e3.png

(d)清空字典dict.clear()

a4bf04ced4c4144e71977feacefe96d5.png

④统计键值对数量len(dict)

4e528ce956d6834ead8f6fd92e6c0eaf.png

⑤合并字典dict.update(dict_new)

f9c3fa6a9b313c0377a7f3079b1ea432.png

(3)迭代遍历 for

遍历就是依次从字典中获取所有键值对

①for 循环内部使用的key的变量 in 字典

2a12efd34f0ad079387decfa90a987aa.png

提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的迭代遍历需求并不是很多

②直接取值:for value in dict.values() (很少用)

f60097347d51a5a9fe07a8c8685eab47.png

③直接取key:for key in dict.keys() (很少用)

2720edf90338ba985a9c5c10547f1749.png

④直接取键和值:for key, value in dict.items()

e376d4dabd38bc6134ba33ee488b072d.png

注意:字典迭代遍历时,不能删除列表内容,否则会报错

e2aea53bca3bb43114753213bcbc8f00.png

⑤应用场景

在开发中,大多的应用场景是:

(a)使用多个键值对,存储描述一个物体的相关信息—描述更复杂的数据信息。

(b)再将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理

418646ae5d8f2e9b848883ce79f0fb72.png

(4)词典的嵌套

①字典汪峰

d29d12f58ea80b486b62f1810e444315.png

②购物车列表

59434b1883afac197f711dbc5eb59347.png

6)set集合

集合类似字典的存储,但只存放key

集合的存储数据特点:可哈希、不可变、不重复、无序

{}可以表示集合

使用set()创建空集合,使用{}创建的是空字典

作用:可以帮助我们去除重复

(1)添加set.add()

b772c89a7b07b1feca23147d3932c1e7.png

练习:列表去重

方法一:

1a9efb768bb497af5d780d54085d0fef.png

方法二:

2c3b55fdcd74898a17d7fbafe97cc122.png

方法三:

484b4f354c9f79ae6b95b6620f579d07.png

方法四(需要保留顺序):

f558e3b8c0243dd412573d59329ed745.png

(2)删除set.remove

①set.remove(key):key不存在时会报错

8e845356dda738358d9e05a768f6a576.png

②set.discard(key) :key不存在时不会报错

ee3d4fd1df93f6ceab7e79cad6fd9b72.png

③set.pop():随机删除数据,很少使用。

(3)取值:迭代遍历for

bada8bc1b0f25e6dc874443cc1975fd8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值