90 lines
3.2 KiB
Markdown
90 lines
3.2 KiB
Markdown
# python3小白课:字典初识
|
||
|
||
### 字典的引入
|
||
|
||
这节课让我们来接触一个全新的数据类型——字典(dict)。
|
||
|
||
小时候陪伴我们成长的我想肯定是一本总是被翻烂的新华字典吧。字典,存在对应映射关系,你拿着一本英汉大字典,查询某个单词,就能查到对应的释义中文解释是什么。那么在python中的字典就类似这样的映射关系。
|
||
|
||
它同样可以存储很多的数据内容,但跟我们的列表、元素不同的是,它的内部是不存在顺序的,所以我们不能使用中括号的数字索引来获取字典元素值。
|
||
|
||
为什么会有字典呢?大家可以这么想,你在查英汉字典的时候,会有如下对应关系:
|
||
|
||
`apple -> 苹果`
|
||
|
||
`banana -> 香蕉`
|
||
|
||
如果我们是用列表或者元组来存储这样的对应关系,一种比较不错的方式是弄两个列表或元组,通过索引来进行一一对应。但这显然不是一种最优的方案。这时候,我们可以使用字典,字典通过`键值对`的方式来做一一对应的映射关系,都存在一个字典变量里面,可以达到这样的效果(注意这里不是真的python代码):
|
||
|
||
```python
|
||
a = {
|
||
apple -> 苹果
|
||
banana -> 香蕉
|
||
}
|
||
```
|
||
|
||
这里的英文单词就是字典中的`键(key)`,中文释义就是字典中的`值(value)`。它们组成key-value键值对。而且在内部没有顺序,比如你先定义banana这个键值对,跟先定义apple并没有任何区别。
|
||
|
||
> [!danger]
|
||
>
|
||
> 我们可以通过键来获取值,所以在python的字典中,键不允许重复。
|
||
|
||
---
|
||
|
||
### 创建字典
|
||
|
||
> [!question]
|
||
>
|
||
> 那么在python中,如何定义字典呢?
|
||
|
||
我们来看看下面的代码:
|
||
|
||
```python
|
||
# coding:utf-8
|
||
# 通过dict命令定义字典或{}定义字典,可以定义空字典
|
||
a = {} # 这种方式较常用
|
||
print(dict(), a)
|
||
# 可以这么写来定义,多个字典成员之间用逗号分隔,值可以是各种基础数据类型
|
||
a = {"语文": 90, "数学": 89, "计算机": None}
|
||
print(a)
|
||
# 对于字典,python还支持跨行定义,这样看起来比较美观,实际使用时也比较推荐
|
||
a = {
|
||
"语文": 90,
|
||
"数学": 89,
|
||
"计算机": 100
|
||
}
|
||
print(a)
|
||
# 不可变类型可以作为key,比如数字、元组等,不能是列表为key(思考为什么?)。看个例子:
|
||
# 这里我们用了三种类型的数据作为键,看起来相似,但实际不同
|
||
a = {
|
||
1: 90,
|
||
"1": 89,
|
||
(1,): 100
|
||
}
|
||
print(a)
|
||
|
||
# python还支持通过传入列表或元组创建dict,每个元素是一个键值对,比如:
|
||
a = [("语文", 90), ("数学", 89), ("计算机", None)]
|
||
print(dict(a))
|
||
a = [["语文", 90], ["数学", 89], ["计算机", None]]
|
||
print(dict(a))
|
||
|
||
# 还可以通过dict命令的关键字参数创建dict,此时关键字不用加引号,键会是字符串(大多数时候都是字符串键)
|
||
a = dict(语文=90, 数学=100)
|
||
print(a)
|
||
# 这种方式不支持关键字用元组哦~,会报错
|
||
a = dict((1,2,3)=90, bbb=100)
|
||
print(a)
|
||
```
|
||
|
||
|
||
|
||
### 单词释义
|
||
|
||
| 单词 | 释义 |
|
||
| ----- | ---------------------------- |
|
||
| dict | dictionary字典单词的简写形式 |
|
||
| key | 键 |
|
||
| value | 值 |
|
||
|