Python-字典(练习题)

1. Python 字典基础概念

Python 字典是一种以键值对为元素的数据类型。它是用大括号 ({}) 包含一系列的键和对应的值,每个键值对之间用逗号(,)隔开。其中,键必须是不可变的(如字符串、数字、元组等),而值则可以是任意类型的数据。

下面演示一个简单的字典实例:

d = {'apple': 1, 'banana': 2, 'orange': 3}

print(d)

# {'apple': 1, 'banana': 2, 'orange': 3}

上述例子中,字典的三个键分别是 'apple'、'banana' 和 'orange',对应的值为 1、2 和 3。

1.1 创建字典

在 Python 中,我们可以通过以下两种方式来创建字典:

1.1.1 字面值语法

字面值语法是最常用的创建字典的方法。可以在 {} 中添加一个或多个键值对:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

print(employees)

# {'John': 5000, 'Jack': 7000, 'Jill': 6500}

1.1.2 dict() 函数

我们可以通过将元组、列表或其他字典作为参数传递给 dict() 函数来创建字典:

person = dict(name='Alice', age=26, gender='female')

print(person)

# {'name': 'Alice', 'age': 26, 'gender': 'female'}

1.2 访问字典中的值

我们可以通过键来访问字典中的值。如果键不存在,则会抛出一个 KeyError 异常:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

print(employees['Jack']) # 7000

print(employees['Sarah']) # KeyError: 'Sarah'

我们还可以使用 get() 方法来访问字典中的值:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

print(employees.get('Jack')) # 7000

print(employees.get('Sarah')) # None

get() 方法还可以设置默认值。如果键不存在,则返回默认值而不是 None:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

print(employees.get('Sarah', 'Not found'))

# Not found

1.3 修改字典

可以通过给特定键赋值来修改字典中的值:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

employees['John'] = 5500

print(employees)

# {'John': 5500, 'Jack': 7000, 'Jill': 6500}

1.4 删除字典元素

可以使用 del 语句来删除字典中的元素(即键值对):

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

del employees['John']

print(employees)

# {'Jack': 7000, 'Jill': 6500}

我们还可以使用 pop() 方法来删除指定键的元素,并返回它的值。

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

salary = employees.pop('Jack')

print(salary) # 7000

print(employees)

# {'John': 5000, 'Jill': 6500}

1.5 字典常用操作

1.5.1 len() 函数

可以使用 len() 函数获取字典元素的个数:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

print(len(employees)) # 3

1.5.2 in / not in 运算符

可以使用 in 和 not in 运算符检查字典中是否包含某个键:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

print('John' in employees) # True

print('Sarah' not in employees) # True

1.5.3 keys() / values() / items() 方法

我们可以使用 keys()、values() 和 items() 方法返回一个字典的键、值或键值对:

employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}

print(employees.keys()) # dict_keys(['John', 'Jack', 'Jill'])

print(employees.values()) # dict_values([5000, 7000, 6500])

print(employees.items()) # dict_items([('John', 5000), ('Jack', 7000), ('Jill', 6500)])

2. Python 字典练习题

2.1 练习一:计算每个字符在字符串中出现的次数

编写一个函数,接受一个字符串作为参数,计算每个字符在字符串中出现的次数,并以字典的形式返回结果。例如,对于字符串 'hello',函数应该返回 {'h': 1, 'e': 1, 'l': 2, 'o': 1}。

代码如下:

def count_chars(s):

d = {}

for c in s:

if c in d:

d[c] += 1

else:

d[c] = 1

return d

测试代码:

s = 'hello'

print(count_chars(s)) # {'h': 1, 'e': 1, 'l': 2, 'o': 1}

2.2 练习二:获取字典中值最大的键

编写一个函数,接受一个字典作为参数,获取字典中值最大的键。

代码如下:

def get_max_key(d):

return max(d, key=d.get)

测试代码:

d = {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}

print(get_max_key(d)) # 'orange'

2.3 练习三:合并两个字典

编写一个函数,接受两个字典作为参数,合并它们,并以字典的形式返回结果。

代码如下:

def merge_dicts(d1, d2):

return {**d1, **d2}

测试代码:

d1 = {'apple': 3, 'banana': 2}

d2 = {'orange': 5, 'peach': 1}

print(merge_dicts(d1, d2)) # {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}

2.4 练习四:获取字典的子集

编写一个函数,接受一个字典和一组键作为参数,返回该字典中仅包含这些键的子集。

代码如下:

def get_subset(d, keys):

return {k: d[k] for k in keys if k in d}

测试代码:

d = {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}

keys = ['apple', 'orange']

print(get_subset(d, keys)) # {'apple': 3, 'orange': 5}

2.5 练习五:以指定顺序遍历字典

编写一个函数,接受一个字典和一个键列表作为参数。函数按照键列表中指定的顺序遍历字典,并以键值对的形式返回结果。

代码如下:

def traverse_dict(d, keys):

return [(k, d[k]) for k in keys if k in d]

测试代码:

d = {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}

keys = ['orange', 'apple']

print(traverse_dict(d, keys)) # [('orange', 5), ('apple', 3)]

以上就是 Python 字典的基本概念和常用操作,以及一些字典练习题的解答。熟练掌握字典的使用,可以更高效地处理各种数据。

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

后端开发标签