Python字典的使用技巧(一篇详解)

目录

1. 创建字典

2. 访问字典中的值

2.1 方括号 []

2.2 get() 方法:

2.3 遍历键值对

2.4 只遍历键

2.5 只遍历值

3. 修改字典中的(键值对)

3.1 添加新的键值对

3.2 更新已有键的值

3.3 update() 方法

3.4 setdefault() 方法

3.5 键不存在时

4. 删除字典中的键值对

4.1 del关键字

4.2 pop()方法

4.3 popitem() 方法

4.4 清空字典

4.5 删除整个字典

5. defaultdict

6. Counter

结语


Python中的六大数据类型(数字、字符串、列表、元组、字典和集合),我们已经讲清楚了前4个,现在我们开始讲解Python中的字典(键值对)数据类型。

在 Python 中,字典(Dictionary)是一种无序、可变的数据类型,用于存储键(key)和值(value)之间的映射关系。并且可以根据键快速检索值。除了基本的添加、删除、获取值之外,还有许多强大的技巧和方法可以让我们更好地利用字典。这里,我们旨在介绍Python 字典的使用方法,并提供一些技巧,希望能帮助大家更好地理解字典数据类型

1. 创建字典

​字典的类型为: d = {key1 : value1, key2 : value2, key3 : value3 }
注意:Key必须是唯一的,但Value则不必。

首先,来看一张图,字典的结构就如同下面的这张图,{ }(大花括号)用来声明字典字典中的每一个元素都是由键值对组成,也就是Key:Value的组合。这里的冒号 是用来分割键值对的。同时,Value元素的类型,可以是任何类型的组合。

创建字典,可以由以下几种方法。

# 1. 使用大括号 {} 创建空字典:
my_dict = {}


# 2. 使用键值对创建字典:
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}


# 3. 使用 dict() 构造函数:
my_dict = dict(key1='value1', key2='value2', key3='value3')

# 4. 使用列表/元组的列表转换为字典:
# 列表中每个元素是一个包含键值对的元组
my_list = [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')]
my_dict = dict(my_list)

# 或者使用zip函数
keys = ['key1', 'key2', 'key3']
values = ['value1', 'value2', 'value3']
my_dict = dict(zip(keys, values))



# 5.使用推导式出创建一个列表
# 创建一个简单的字典,键为数字 0 到 4,值为它们的平方
my_dict = {x: x**2 for x in range(5)}
print(my_dict)
# 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

2. 访问字典中的值

要访问Python字典中的值,你可以使用字典的键(keys)来获取对应的值(values),对比一下,就会发现前面我们学的List(列表)就只能以索引的方式来获取对于的值。这里有几种访问字典中的值常见的方法:

2.1 方括号 []

使用方括号 [] 和键名访问值:

my_dict = {"a": 1, "b": 2, "c": 3}

# 访问键为 "a" 的值
value_a = my_dict["a"]
print(value_a)  # 输出: 1

# 访问键为 "b" 的值
value_b = my_dict["b"]
print(value_b)  # 输出: 2

2.2 get() 方法:

使用 get() 方法,获取键值对。

my_dict = {"a": 1, "b": 2, "c": 3}

# 使用 get() 方法获取键为 "c" 的值
value_c = my_dict.get("c")
print(value_c)  # 输出: 3

# 如果键不存在,get() 方法会返回 None
value_d = my_dict.get("d")
print(value_d)  # 输出: None

# 也可以提供一个默认值,如果键不存在则返回该默认值
value_e = my_dict.get("e", 0)  # 默认值为 0
print(value_e)  # 输出: 0

除了上面的方法,使用 get() 方法可以实现类似于 switch 语句的功能,下面简单演示:

def switch_case(argument):
    switcher = {
        1: "January",
        2: "February",
        3: "March",
        4: "April",
        5: "May",
        6: "June",
        7: "July",
        8: "August",
        9: "September",
        10: "October",
        11: "November",
        12: "December"
    }
    
    return switcher.get(argument, "Invalid month")

# 测试
month_name = switch_case(3)
print(month_name)  # 输出: March

invalid_month = switch_case(13)
print(invalid_month)  # 输出: Invalid month

2.3 遍历键值对

遍历所有的键值对。

my_dict = {"a": 1, "b": 2, "c": 3}

# 遍历键值访问
for key, value in my_dict.items():
    print(key, value)


# 输出
a 1
b 2
c 3 

2.4 只遍历键

只遍历所有的键。

my_dict = {"a": 1, "b": 2, "c": 3}

# 遍历所有的键
for key in my_dict.keys():
    print(key)


# 输出
a
b
c 

2.5 只遍历值

只遍历所有的值。

my_dict = {"a": 1, "b": 2, "c": 3}

# 遍历所有的值
for value in my_dict.values():
    print(value) 

# 输出
1
2
3

3. 修改字典中的(键值对)

字典是可变的数据类型,所以可以通过添加和更新键值对,来更新字典。下面是几种操作方法:

3.1 添加新的键值对

my_dict = {"a": 1, "b": 2}

# 添加新的键值对 "c": 3
my_dict["c"] = 3

print(my_dict)
# 输出: {'a': 1, 'b': 2, 'c': 3}

3.2 更新已有键的值

my_dict = {"a": 1, "b": 2}
# 更新键 "b" 的值为 5
my_dict["b"] = 5

print(my_dict)
# 输出: {'a': 1, 'b': 5, 'c': 3}

3.3 update() 方法

使用 update() 方法批量添加或更新键值对:

my_dict = {"a": 1, "b": 2}
# 使用 update() 方法批量添加或更新键值对
my_dict.update({"d": 4, "e": 5})

print(my_dict)
# 输出: {'a': 1, 'b': 5, 'c': 3, 'd': 4, 'e': 5}

3.4 setdefault() 方法

使用 setdefault() 方法添加键值对,但仅在键不存在时:

my_dict = {"a": 1, "b": 2}
# 使用 setdefault() 方法添加键值对,但仅在键不存在时
my_dict.setdefault("f", 6)

print(my_dict)
# 输出: {'a': 1, 'b': 2, 'f': 6}

# 如果键已存在,则不会进行任何操作
my_dict.setdefault("a", 10)

print(my_dict)
# 输出:{'a': 1, 'b': 2, 'f': 6}

3.5 键不存在时

如果键不存在时执行特定操作:

my_dict = {"a": 1, "b": 2}
# 如果键不存在,可以在代码中指定一个操作
if "g" not in my_dict:
    my_dict["g"] = 7

print(my_dict)
# 输出: {'a': 1, 'b': 2, 'g': 7}

4. 删除字典中的键值对

既然可以更新键值对,那么删除自然也是可以的,在Python中删除字典(dictionary)中的键值对,你可以使用以下方法:

4.1 del关键字

使用 del 关键字删除指定键值对:

my_dict = {"a": 1, "b": 2, "c": 3}

# 删除键为 "a" 的键值对
del my_dict["a"]

print(my_dict)
# 输出: {'b': 2, 'c': 3}
 

4.2 pop()方法

使用 pop() 方法删除指定键值对并返回其值:

my_dict = {"a": 1, "b": 2, "c": 3}

# 删除键为 "b" 的键值对,并返回被删除的值
deleted_value = my_dict.pop("b")

print(deleted_value)  # 输出: 2
print(my_dict)        # 输出: {'a': 1, 'c': 3}

4.3 popitem() 方法

使用 popitem() 方法删除并返回最后一个键值对。这是栈的思想。后进先出。

my_dict = {"a": 1, "b": 2, "c": 3}

# 删除并返回任意的键值对
removed_item = my_dict.popitem()

print(removed_item)  # 输出: ('c', 3)
print(my_dict)       # 输出: {'a': 1, 'b': 2}

4.4 清空字典

清空字典中的所有键值对:

my_dict = {"a": 1, "b": 2, "c": 3,  "d": 3}

# 清空字典
my_dict.clear()

print(my_dict)
# 输出: {}

4.5 删除整个字典

使用 del 关键字删除整个字典:

my_dict = {"a": 1, "b": 2, "c": 3,  "d": 3}

# 删除整个字典
del my_dict

# 此时再访问 my_dict 将会引发 NameError 

5. defaultdict

在Python中,collections 模块提供了defaultdict 类,它是字典的一个子类,提供了一个默认值,这样当访问不存在的键时,会自动创建对应默认值的项。这对于处理缺失键的情况非常有用。

# 导入 collections 模块
from collections import defaultdict

# 创建一个 defaultdict,指定默认值为 int 类型(默认为 0)
my_dict_int = defaultdict(int)

# 访问一个不存在的键,会自动创建并初始化为默认值
print(my_dict_int["a"])  # 输出: 0

# 字典中的 "a" 键现在已经被创建
print(my_dict_int)  # 输出: defaultdict(<class 'int'>, {'a': 0})


# 创建一个 defaultdict,指定默认值为 str 类型(默认为空字符串)
my_dict_str = defaultdict(str)

print(my_dict_str["b"])  # 输出: ""

# 字典中的 "b" 键现在已经被创建
print(my_dict_str)  # 输出: defaultdict(<class 'str'>, {'b': ''})

注意事项:

  • defaultdict 中的默认值是在调用 __getitem__() 方法时创建的,而不是在字典创建时。
  • 你可以像普通字典一样使用 defaultdict 的所有方法。

这里技巧是:defaultdict 可以让你更加方便地处理缺失键的情况,避免了使用 dict.setdefault() 或者 if 语句来初始化新键的值。

6. Counter

collections 模块中,除了前面讲到的defaultdict,另一个 Counter 类也常用于统计可迭代对象中元素的数量:

from collections import Counter

# 创建一个 Counter 对象
c = Counter(['a', 'b', 'a', 'c', 'a', 'b'])

# 访问元素出现的次数
print(c['a'])  # 输出: 3
print(c['b'])  # 输出: 2
print(c['c'])  # 输出: 1

# 可以直接传入字符串来统计字符出现的次数
word_counts = Counter("hello world")
print(word_counts)  # 输出: Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

# Counter 也可以像字典一样遍历
for key, value in word_counts.items():
    print(f"{key}: {value}")

# 获取最常见的元素
print(word_counts.most_common(2))  # 输出: [('l', 3), ('o', 2)]

技巧提示: Counter 特别适用于统计词频、元素出现次数等需求。

结语

Python 字典在实际编程中广泛应用。那么,关于 字典数据类型及其操作的函数讲解和示例代码,基本上讲完了。希望这些技巧能帮助你更好地利用 Python 中的字典!大家可以尝试着跟着代码一起学习,如果后面还有补充的,我将继续为大家分享。

感谢您的关注,我们下一篇文章将继续学习、记录python的下一个知识点。

如果感觉阅读对您还有些作用,可以评论留言,关注我。谢谢您的阅读!

往期学习:

Python安装教程(版本3.8.10)windows10

Linux系统:安装Conda(miniconda)

Conda快速安装的解决方法(Mamba安装)

VSCode安装教程(版本:1.87.0)Windows10

Python基础语法:从入门到精通的必备指南

Python的基本数据类型

Python数据类型间的转换(隐式、显式)-CSDN博客

Python基础知识:运算符详解-CSDN博客

Python基础知识:数字类型及数学函数详解-CSDN博客

Python字符串操作及方法详解!一篇就搞定!-CSDN博客

Python列表及其操作详解,从此不再迷茫!-CSDN博客

Python元组(Tuple)深度解析!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TiYong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值