Python中的字典是一种无序可变容器,用于存储键值对。也被称为关联数组、哈希表或映射。字典中的键必须是不可变类型,例如字符串、元组或数字。值可以是任何数据类型,包括其他字典。
字典的语法是通过花括号{}括起来的一个或多个键值对,每个键值对由键和值用冒号(:)分隔,多个键值对之间用逗号(,)分隔。例如:
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
在上面的例子中,'name'、'age'和'city'是键,而'Alice'、25和'New York'是对应的值。
字典中的元素可以通过键来访问,类似于列表中的索引。例如:
print(my_dict['name']) # 输出:'Alice'
如果指定的键不存在,会引发一个KeyError异常。
字典中的元素可以使用赋值操作符进行修改,也可以使用del语句删除元素。例如:
my_dict['age'] = 26
del my_dict['city']
调用dict()函数可以通过其他类型的映射对象创建一个字典,例如元组的列表、关键字参数等。例如:
my_dict2 = dict([('name', 'Bob'), ('age', 30), ('city', 'Los Angeles')])
my_dict3 = dict(name='Charlie', age=35, city='Chicago')
字典提供了多个方法用于操作和访问其内容。一些常见的方法包括:
下面是一个使用字典的示例程序,该程序使用一个字典来存储电影信息,用户可以通过命令行输入电影名称以查找其信息:
movies = {
'The Shawshank Redemption': {'year': 1994, 'director': 'Frank Darabont', 'rating': 9.3},
'The Godfather': {'year': 1972, 'director': 'Francis Ford Coppola', 'rating': 9.2},
'The Dark Knight': {'year': 2008, 'director': 'Christopher Nolan', 'rating': 9.0},
'Forrest Gump': {'year': 1994, 'director': 'Robert Zemeckis', 'rating': 8.8},
}
while True:
name = input('请输入电影名称(输入q退出):')
if name == 'q':
break
movie = movies.get(name)
if movie is None:
print('没有找到该电影')
else:
print(f'年份:{movie["year"]}, 导演:{movie["director"]}, 评分:{movie["rating"]}')
在上面的程序中,movies字典存储了4部电影的信息,包括上映年份、导演和评分。程序使用一个死循环来不断等待用户输入电影名称,如果用户输入q则退出循环。对于每个输入的电影名称,程序通过get()方法从字典中获取对应的电影信息。如果电影不存在,则输出提示信息;否则输出电影的年份、导演和评分。
除了用于存储数据外,字典还常用于记录计数。例如,下面的代码统计了一段文本中每个单词出现的次数:
text = 'this is a test sentence for counting words in python this is a simple test'
words = text.split()
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
for word, count in counts.items():
print(f'{word}: {count}')
在上面的代码中,首先将文本按空格切割成单词列表。然后创建一个空字典counts,用于记录每个单词出现的次数。遍历单词列表中的每个单词,将其作为键访问counts字典并增加计数器,如果该单词尚未出现过,则默认计数器为0。最后遍历counts字典并输出每个单词的计数器。