101 lines
4.6 KiB
Markdown
101 lines
4.6 KiB
Markdown
# python3小白课:字典的常用方法
|
||
|
||
本节课我们来大概将一些字典自带的常用方法。
|
||
|
||
看例子:
|
||
|
||
```python
|
||
# coding:utf-8
|
||
# 查看有哪些内置方法?(注意忽略私有方法和特殊方法)
|
||
print(dir(dict))
|
||
a = {
|
||
1: 90,
|
||
"1": 89,
|
||
(1,): 100,
|
||
"语文": 90,
|
||
"数学": 89,
|
||
"计算机": 100,
|
||
"英语": 89.57
|
||
}
|
||
# clear,跟列表元组一样,会将字典变为空字典,copy方法可以复制一个字典副本
|
||
# 注意不要用b = a这样的写法,这样写clear b时,a也会变空字典
|
||
b = a.copy()
|
||
b.clear()
|
||
print(b)
|
||
# get方法非常非常常用,用来取字典中某个键的值,使用[]取值如果键不存在会报错,但get方法取值不存在时,
|
||
# 会返回None,或者可以指定第二个参数作为返回值。因此,实际编写中更推荐用get而弃用[],除非你百分百保证存在该键
|
||
print(a.get("语文"))
|
||
print(a.get("美术"))
|
||
# 你也可以指定返回值
|
||
print(a.get("美术", 1))
|
||
# 我们需要区别于setdefault方法,这个方法可以设置一个键的默认值,当这个键找得到时,与get等效,返回值
|
||
# 但当这个键不存在时,setdefault会给字典新增这个键并赋值给的默认值,而get不会新增键
|
||
print(a.setdefault("美术", 99)) # 键不存在,返回设定的第二个参数并添加键到字典中
|
||
print(a)
|
||
print(a.setdefault("美术", 98)) # 这次键存在,因此不会修改它的值,可以返回
|
||
print(a)
|
||
# update方法可以用新字典包含的键值对来更新原有字典,当原有字典存在该键时,则更新
|
||
# 当原有字典不存在对应键时,则添加该键值对进去
|
||
a.update({"语文":0, "体育": 92})
|
||
print(a)
|
||
|
||
"""
|
||
上述的一些命令是在我们知道这个字典有什么key的情况下,有的时候,我们不知道这个字典有什么键。
|
||
有什么办法能够获取键的列表以及值的列表呢?
|
||
使用items()方法可以获取字典的每个键值对,通过list命令转化成列表,每个元素是一个键值对元组。
|
||
使用keys()方法可以获取字典的每个键,通过list命令转化成列表,每个元素是一个键名。
|
||
使用values()方法可以获取字典的每个值,通过list命令转化成列表,每个元素是一个值。
|
||
***这几个方法在做字典枚举时非常有用,请务必掌握。***
|
||
"""
|
||
print(list(a.items()))
|
||
print(list(a.keys()))
|
||
print(list(a.values()))
|
||
|
||
# pop方法用于弹出某个键值对,并删除它,找得到会返回对应的值,找不到会报错,跟列表类似
|
||
print(a.pop("语文"))
|
||
print(a)
|
||
# popitem方法可以弹出某个键值对,实际是弹出底层存储的最后一个键值对并删除
|
||
# 由于python的字典没有顺序,我们不能说是定义的最后一个,而是底层存储的最后一个
|
||
print(a.popitem())
|
||
print(a)
|
||
# 你也可以用两个变量分别接收键和值
|
||
k, v = a.popitem()
|
||
print(k, v)
|
||
print(a)
|
||
# fromkeys方法可以批量创建指定key的字典,还能给默认值。个人很少用这个感觉
|
||
# 用列表创建,不给默认值时值默认为None
|
||
a = dict.fromkeys(['a', 'b'])
|
||
print(a)
|
||
# 用元组创建
|
||
a = dict.fromkeys(('a', 'b'))
|
||
print(a)
|
||
# 指定默认值
|
||
a = dict.fromkeys(['a', 'b'], "我是默认值")
|
||
print(a)
|
||
# 如果是这样呢?会不会分别给a、b赋值默认值?请自行尝试
|
||
a = dict.fromkeys(['a', 'b'], ["我是默认值","111"])
|
||
print(a)
|
||
|
||
# 附送一个,利用字典来给列表去重的方法,尤其适用在列表元素量很大时,很方便
|
||
a = [1, 0, 3, 7, 7, 5, 5, 0, 1]
|
||
newList = list({}.fromkeys(a).keys())
|
||
print(newList)
|
||
```
|
||
|
||
|
||
|
||
### 单词释义
|
||
|
||
| 单词 | 释义 |
|
||
| ---------- | ------------------------------------------------------------ |
|
||
| clear | 清除,清理 |
|
||
| copy | 复制 |
|
||
| get | 获得,得到 |
|
||
| setdefault | set设置,default默认,合起来就是设置默认值 |
|
||
| update | 更新 |
|
||
| items | 项目,一件东西(复数) |
|
||
| keys | key键的复数 |
|
||
| values | value值的赋值 |
|
||
| pop | 出栈 |
|
||
| popitem | pop item两个单词合起来,将一件东西出栈,这里是把键值对抛出字典外 |
|
||
| fromkeys | from来自...,keys,键的复数,合起来就是以很多键来怎么怎么样的意思 | |