python常用数据结构字典梳理

1.字典的定义与特点

字典是Python中一种基本数据结构,本质上是一种键(key)值(value)对形式的无序集合,用大括号"{}"括起来,每个键值对之间使用逗号分隔。其中,键必须是不可变类型,如字符串、数字、元组,值可以是任意类型。下面通过一个字典的定义来说明:

#定义一个简单的字典

dict1 = {'apple':3, 'orange':2.5, 'pear':4.1}

print(dict1)

其中,'apple'、'orange'、'pear'分别是键,3、2.5、4.1分别是对应键的值。字典的特点有以下几个方面:

1.一个键只能对应一个值,但是一个值可以对应多个键;

2.字典是无序的,只能通过键来访问对应的值;

3.字典中的键必须是不可变类型,如字符串、数字、元组;

4.字典中的值可以是任何类型,包括基本类型和自定义类型。

2.字典的基本操作

2.1 字典的访问

可以使用键来访问字典中的值,如果键不存在,则会报错。以下是一个字典的访问示例:

#访问字典中的值

dict1 = {'apple':3, 'orange':2.5, 'pear':4.1}

print(dict1['apple']) #输出3

在上面的代码中,使用了"[]"操作符来访问字典中的值,并输出了键'apple'对应的值3。

2.2 字典的添加和修改

可以通过赋值操作来添加和修改字典中的键值对,如下面这个例子:

#添加和修改字典中的键值对

dict1 = {'apple':3, 'orange':2.5, 'pear':4.1}

dict1['banana'] = 1.5 #添加新的键值对

dict1['pear'] = 5.2 #修改原有键的值

print(dict1)

在上面的代码中,先创建了一个字典dict1,然后通过赋值操作添加了一个新的键值对'banana':1.5,接着修改了已有键'pear'所对应的值。

2.3 字典的删除

可以使用"del"语句删除字典中的键值对,如下面这个例子所示:

#删除字典中的键值对

dict1 = {'apple':3, 'orange':2.5, 'pear':4.1}

del dict1['orange'] #删除指定的键值对

print(dict1)

在上面的代码中,首先创建了一个字典dict1,然后使用"del"语句删除了指定键'orange'对应的键值对。执行结果为{'apple': 3, 'pear': 4.1}。

3.字典的常用方法

3.1 字典的遍历

可以使用for循环遍历字典中的所有键值对,如下面这个例子所示:

#遍历字典中的所有键值对

dict1 = {'apple':3, 'orange':2.5, 'pear':4.1}

for key in dict1: #遍历字典中的所有键

print(key, dict1[key])

在上面的代码中,用一个for循环遍历字典中的所有键,并输出每个键和对应的值。

3.2 字典的常用方法

Python中的字典还提供了一些常用的方法,包括:

1.len(dict):返回字典中键值对的数量;

2.dict.copy():返回一个字典的浅拷贝;

3.dict.fromkeys(seq[,value]):创建一个新字典,以序列seq中的元素作为键,value作为对应键的初始值;

4.dict.get(key[,default]):返回字典中指定键的值,如果不存在,则返回默认值,默认值可以在函数参数中指定;

5.dict.items():返回字典中所有的键值对;

6.dict.keys():返回字典中所有的键;

7.dict.pop(key[,default]):删除字典中指定键的键值对,并返回对应的值,如果指定键不存在,则返回默认值;

8.dict.popitem():随机删除字典中的一对键值对,并返回这对键值对;

9.dict.setdefault(key[,default]):和get()方法类似,但是如果指定键不存在,则会在字典中添加一个默认值,而不是返回None;

10.dict.update(dict2):将dict2中的键值对更新到字典中,如果有相同的键,则覆盖原有键的值;

11.dict.values():返回字典中所有的值。

下面通过一个例子来演示字典的常用方法:

#字典常用方法演示

dict1 = {'apple':3, 'orange':2.5, 'pear':4.1}

print(len(dict1)) #输出3,字典中有3个键值对

dict2 = dict1.copy() #复制dict1并赋值给dict2

print(dict2) #输出{'apple': 3, 'orange': 2.5, 'pear': 4.1}

seq = ('apple', 'banana', 'pear')

dict3 = dict.fromkeys(seq) #创建一个新字典

print(dict3) #输出{'apple': None, 'banana': None, 'pear': None}

print(dict1.get('apple')) #输出3

print(dict1.items()) #输出dict_items([('apple', 3), ('orange', 2.5), ('pear', 4.1)])

print(dict1.keys()) #输出dict_keys(['apple', 'orange', 'pear'])

print(dict1.pop('orange')) #输出2.5

print(dict1) #输出{'apple': 3, 'pear': 4.1}

print(dict1.popitem()) #输出('pear', 4.1)

print(dict1) #输出{'apple': 3}

dict1.setdefault('banana', 1.5) #添加新键'banana'并赋值1.5

print(dict1) #输出{'apple': 3, 'banana': 1.5}

dict1.update({'orange':2.8, 'pear':4.7}) #更新字典

print(dict1) #输出{'apple': 3, 'banana': 1.5, 'orange': 2.8, 'pear': 4.7}

print(dict1.values()) #输出dict_values([3, 1.5, 2.8, 4.7])

在上面的代码中,先创建了一个字典dict1,然后使用了不同的方法来模拟字典的常见操作,如添加、修改、删除等,最后输出了字典中的所有值。

4.字典的应用场景

字典是Python中非常常用的一种数据结构,特别适用于存储可变的数据集合,例如散列表、映射表等。字典还常用于存储配置文件、路由表、数据库查询结果等,以及解决一些实际问题。下面分别给出几个具体的应用场景。

4.1 存储配置文件

在开发软件时,通常需要在某个地方存储一些配置信息,例如数据库的连接信息、日志的格式、调试模式等。字典非常适合用于存储这些信息,如下面这个例子所示:

#存储配置文件信息

config = {'debug': True,

'log_format': 'verbose',

'db': {'host':'localhost', 'port':3306, 'user':'root', 'password':''}}

print(config['debug']) #输出True

print(config['log_format']) #输出verbose

print(config['db']['port']) #输出3306

在上面的代码中,使用了一个具有嵌套结构的字典来存储配置信息,可以通过键来访问相应的值。例如,'db':['host']表示数据库连接的主机地址。

4.2 统计字符串中各个字符的出现次数

字典还可以用于统计字符串中各个字符的出现次数。下面是一个例子:

#统计字符串中各个单词的出现次数

str1 = 'a b c d e f g h i a b c d e f g h'

arr = str1.split()

word_count = {}

for word in arr:

if word in word_count:

word_count[word] += 1

else:

word_count[word] = 1

print(word_count)

在上面的代码中,首先创建了一个字符串str1,并将其转换为一个单词列表arr。接着,使用一个for循环遍历列表arr中的所有单词,并根据单词是否存在于字典word_count中来统计出现次数。最后,输出字典中所有的键值对,即所有单词出现的次数。

4.3 交换字典中的键和值

如果需要将字典中的键和值互换,可以通过以下方法实现:

#交换字典中的键和值

dict1 = {'apple':3, 'orange':2.5, 'pear':4.1}

dict2 = {value:key for key,value in dict1.items()}

print(dict1) #输出{'apple': 3, 'orange': 2.5, 'pear': 4.1}

print(dict2) #输出{3: 'apple', 2.5: 'orange', 4.1: 'pear'}

在上面的代码中,使用了一个字典推导式来创建新字典dict2,其键和值分别来自原始字典dict1的值和键。例如,dict1[‘apple’]: 3在新字典中对应的键值对是3: ‘apple’。

后端开发标签