python:8 字典(类似 go 中的 map)

字典(类似 go 中的 map)

  • 字典的应用场景
  • 创建字典的语法
  • 字典常见操作
  • 字典的循环遍历

1 字典的应用场景

思考1: 如果有多个数据,例如:"Tom,男,20,如何快速存储?
答: 列表

list1 = ['tom','男','20']

思考2:如何查找到数据’Tom’ ?

答: 查找到下标为 0 的数据即可

list1[0]

思考3:如果将来数据顺序发生变化,如下所示,还能用 list1[0] 访问到数据 Tom 吗?

答: 不能,数据 Tom 此时下标为2。

但是在代码中我们希望尽可能少的修改代码,如果需要较多修改的话那么我们的代码改动就太多了

list1 = ['男','tom','20']

思考4: 数据顺序发生变化,每个数据的下标也会随之变化,如何保证数据顺序变化前后能使用同一的
标准找数据呢?

答:字典,字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不支持下标.
后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。

2 创建字典的语法

字典特点

  • 符号为大括号
  • 数据为键值对形式出现
  • 各个键值对之间用逗号隔开
# 有数据字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 空字典
dict2 = {}

# 创建空字典
dict3 = dict()

# 字典赋值
dict4 = dict3

print(type(dict1))
print(dict1)
print(dict2)
print(dict3)
print(dict4)
[15:22:21 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
<class 'dict'>
{'name': 'tom', 'age': 29, 'gender': '男'}
{}
{}
{}

注意:

一般称冒号前面的为键(key),冒号后面的成为值(value)

3 字典常见操作

3.1 增

写法:字典序列 [key] = 值

注意:如果 key 存在则修改这个 key 对应的值; 如果 key 不存在则新增此键值对

注意:字典为可变数据类型

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 在原有的 key 在进行赋值会修改上面的 tom
dict1['name'] = 'zhangsan'
print(dict1)

# 新增一个 id = 100 的键值对
dict1['id'] = 100
print(dict1)
[10:24:33 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{'name': 'zhangsan', 'age': 29, 'gender': '男'}
{'name': 'zhangsan', 'age': 29, 'gender': '男', 'id': 100}

3.2 删除

  • del()/del:删除字典或删除字典中指定的键值对
# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 指定删除 age 的 key
del dict1["age"]
print(dict1)
# 可以看到 age 已经没有了
[10:24:33 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{'name': 'tom', 'gender': '男'}
  • clear():清空字典
# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

dict1.clear()
print(dict1)
# 输出为空
[10:35:44 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{}

3.3 修改

写法:字典序列[key] = 值

注意: 如果key存在则修改这个key对应的值 ; 如果key不存在则新增此键值对。

  • 修改
# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 修改 name 字段为 lisi
dict1['name'] = 'lisi'
print(dict1)
[10:37:59 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{'name': 'lisi', 'age': 29, 'gender': '男'}
  • 新增
    • 可以看到由于 dict1 中没有 id 字段所以就新增了一个 id 字段
# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 新增 id
dict1['id'] = 100
print(dict1)
[10:39:59 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{'name': 'lisi', 'age': 29, 'gender': '男', 'id': 100}

3.4 查

3.4.1 key 值查找

如果当前查找的key存在,则返回对应的值;否则则报错

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过指定 key 查到对应值
print(dict1['name'])

# dict1 中没有 id 字段,所以查找报错
print(dict1['id'])
# 报错 keyError id
[10:41:38 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
tom
Traceback (most recent call last):
  File "/root/py-demo/day-1/test.py", line 8, in <module>
    print(dict1['id'])
KeyError: 'id'

3.4.2 get()

  • 语法
字典序列.get(key,默认值)

注意:如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回 None。

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过 get() 获取
print(dict1.get('name'))
print(dict1.get('age'))

# id 在 dict1 中并没有,但是由于设置了 100 的 value 所以返回 100
print(dict1.get('id',100))

# 由于在 dict1 中没有 id 的值所以返回 none
print(dict1.get('id'))
[10:53:00 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
tom
29
100
None

3.4.3 keys()

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过 keys 获取 dict1 字典的数据
# 返回可迭代对象
print(dict1.keys())
[10:57:50 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
dict_keys(['name', 'age', 'gender'])

3.4.4 value()

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过 values 获取字典数据
print(dict1.values())
[11:05:50 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
dict_values(['tom', 29, '男'])

3.4.5 items()

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过 items 函数获取,查找字典中所有键值对,返回可迭代对象,里面的数据为元组,元组数据1是字典的 key,元组数据 2 是字典 key 对应的值
print(dict1.items())
[11:10:56 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
dict_items([('name', 'tom'), ('age', 29), ('gender', '男')])

4 字典的循环遍历

4.1 遍历字典的 key

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过 for 循环遍历 dict1,输出 key
for key in dict1.keys():
    print(key)
[11:12:52 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
name
age
gender

4.2 遍历字典的 value

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过 values() 函数进行遍历
for value in dict1.values():
    print(value)
[14:11:50 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
tom
29
男

4.3 遍历字典元素

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# 通过 items 函数获取字典元素
for d in dict1.items():
    print(d)
[14:12:59 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
('name', 'tom')
('age', 29)
('gender', '男')

4.4 遍历字典键值对

# 创建 dict1 的字典
dict1 = {'name':'tom','age':29,'gender':'男'}

# (method) def items() -> dict_items[str, Any]
# items() 函数返回可迭代对象,内部是元组,元组为 2 个数据
# 元组数据 1 是字典的 key,数据 2 为字典 value
for k,v in dict1.items():
    print(f'k={k},v={v}')
[14:21:23 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
k=name,v=tom
k=age,v=29
k=gender,v=男

5 总结

  • 定义字典
dict1 = {'name':'py','age':'30'}
dict2 = {}
dict3 = dict()
  • 常见操作
    • 增改
字典序列[key] = 值
  • 查找

    • 字典序列[key]
    • keys()
    • values()
    • items()
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇