Python dict 高阶特性

1. 理解 Python 中 dict 的基本概念

在开始探索 Python 中 dict 的高阶特性之前,我们先来理解一下 dict 的基本概念。

dict,全称为 dictionary,是 Python 中内置的一种数据类型,它是一种容器类型,可以存储各种类型的对象,其中每个对象都有一个唯一的 键,对应一个 值。可以把字典看成是键值对集合,每个键与其对应值构成了一个 项。

例如,创建一个简单的字典:

person = {'name': '张三', 'age': 18, 'gender': '男'}

print(person)

# 输出:{'name': '张三', 'age': 18, 'gender': '男'}

这里,字典 person 有 3 个键值对,分别是 'name': '张三','age': 18 和 'gender': '男'。

2. dict 的遍历方式

2.1 遍历字典的键

要遍历字典的键,可以使用字典的 keys() 方法。

person = {'name': '张三', 'age': 18, 'gender': '男'}

for key in person.keys():

print(key)

# 输出:name age gender

也可以使用 for key in person: 的方式遍历字典的键,因为这种方式默认是遍历字典的键。

2.2 遍历字典的值

要遍历字典的值,可以使用字典的 values() 方法。

person = {'name': '张三', 'age': 18, 'gender': '男'}

for value in person.values():

print(value)

# 输出:张三 18 男

2.3 遍历字典的键值对

要同时遍历字典的键和值,可以使用字典的 items() 方法。

person = {'name': '张三', 'age': 18, 'gender': '男'}

for key, value in person.items():

print(key, value)

# 输出:name 张三 age 18 gender 男

3. dict 的常用操作

3.1 判断键是否存在

判断字典中是否存在某个键,可以使用 in 关键字。

person = {'name': '张三', 'age': 18, 'gender': '男'}

if 'name' in person:

print('存在 name 键')

else:

print('不存在 name 键')

# 输出:存在 name 键

也可以使用字典的 get() 方法,如果键存在,返回对应的值,如果不存在,返回指定的默认值(默认为 None)。

person = {'name': '张三', 'age': 18, 'gender': '男'}

name = person.get('name')

salary = person.get('salary', 0)

print(name) # 输出:张三

print(salary) # 输出:0

3.2 添加或修改键值对

要向字典中添加或修改键值对,可以直接使用 [] 进行赋值操作,如果键已经存在,则会修改其对应的值;如果键不存在,则会添加键值对。

person = {'name': '张三', 'age': 18, 'gender': '男'}

person['salary'] = 10000

person['age'] = 20

print(person)

# 输出:{'name': '张三', 'age': 20, 'gender': '男', 'salary': 10000}

4. 使用 dict 进行统计

可以使用字典来进行统计,例如统计一个字符串中每个字符出现的次数。

s = 'hello'

d = {}

for char in s:

if char in d:

d[char] += 1

else:

d[char] = 1

print(d)

# 输出:{'h': 1, 'e': 1, 'l': 2, 'o': 1}

这里,我们先将空字典 d 初始化,然后遍历字符串中的每个字符,如果字符已经在字典中,则将其计数加 1;否则,将其添加到字典中,并将计数设置为 1。

5. 小结

Python 中的 dict 是一种非常常用的数据类型,可以用来存储键值对,并支持各种操作,例如遍历、添加、修改等等。掌握了 dict 的高阶特性,可以让我们的代码更加简洁、高效。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签