python3xiaobaike_2020/chapter3/3-4 python3小白课:字典初识.md
2025-04-20 23:22:14 +08:00

90 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 | 值 |