Python字典简介以及用法详解

  • Post category:Python

Python字典简介以及用法详解

简介

Python字典是一种可变容器模型,用来存储键值对(key-value)映射。 作为键值对存储方式的特殊实现,字典在所有编程语言中都得到了广泛应用。Python的字典在语言中的地位相当于一等公民(first-class citizen),因此掌握字典的用法是Python编程的重要基础之一。

字典的特点:

  • 字典中的元素是无序的,并且必须使用键(key)来访问相关联的值(value)。
  • 键必须是独一无二的(在一个字典中不能有两个相同的键),而值可以不唯一。
  • 键以及其对应的值用冒号(:)分隔。
  • 键和值之间使用逗号(,)分隔,整个字典用一对大括号({})括起来。

字典的常用操作

创建字典

可以使用花括号({})或者 dict() 函数创建一个字典:

# 使用花括号创建字典
dict1 = {'name': 'Tom', 'age': 18, 'gender': 'Male'}
print(dict1)

# 使用 dict() 函数创建字典
dict2 = dict(name='Jerry', age=19, gender='Female')
print(dict2)

输出:

{'name': 'Tom', 'age': 18, 'gender': 'Male'}
{'name': 'Jerry', 'age': 19, 'gender': 'Female'}

访问字典

使用方括号([])通过键访问字典中相应的值:

print(dict1['name'])
print(dict2['age'])

输出:

Tom
19

如果输入一个没有在字典中出现过的键,会抛出 KeyError 异常。可以使用 get() 方法设置默认值来避免 KeyError 异常:

print(dict1.get('address'))  # None
print(dict1.get('address', 'Shanghai'))  # Shanghai

更新字典

可以直接通过键来更新字典中的值:

dict1['age'] = 20
print(dict1)

输出:

{'name': 'Tom', 'age': 20, 'gender': 'Male'}

也可以使用 update() 方法来将一个字典的键值对更新到另一个字典中:

dict2.update({'address': 'Beijing', 'phone': '123456'})
print(dict2)

输出:

{'name': 'Jerry', 'age': 19, 'gender': 'Female', 'address': 'Beijing', 'phone': '123456'}

删除字典

可以使用 del 关键字删除字典或者字典中的某个元素:

del dict1['gender']
print(dict1)

del dict2

输出:

{'name': 'Tom', 'age': 20}

字典方法

items() 方法

返回一个包含字典中所有键值对的元组列表:

print(dict1.items())

输出:

dict_items([('name', 'Tom'), ('age', 20)])

keys() 方法

返回一个包含字典中所有键的列表:

print(dict1.keys())

输出:

dict_keys(['name', 'age'])

values() 方法

返回一个包含字典中所有值的列表:

print(dict1.values())

输出:

dict_values(['Tom', 20])

示例说明

示例1:统计单词出现的次数

下面的代码演示了如何统计一个字符串中各个单词出现的次数:

text = 'hello world hello world hello'
words = text.split()

word_counts = {}
for word in words:
    if word not in word_counts:
        word_counts[word] = 1
    else:
        word_counts[word] += 1

print(word_counts)

输出:

{'hello': 3, 'world': 2}

这个例子中先使用 split() 方法将字符串按照空格分隔成单词列表,然后使用字典记录每个单词出现的次数,最后输出字典即可。

示例2:计算球队的得分和排名

下面的代码演示了如何根据每个球员的得分计算出球队的总分以及球员的排名:

scores = {'A': 96, 'B': 77, 'C': 88, 'D': 92, 'E': 81}

# 计算球队总分
total_score = 0
for score in scores.values():
    total_score += score

print('球队总分为:', total_score)

# 计算球员排名
sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)
print('球员排名为:')
for i, (name, score) in enumerate(sorted_scores):
    print(i + 1, '.', name, score)

输出:

球队总分为: 434
球员排名为:
1 . A 96
2 . D 92
3 . C 88
4 . E 81
5 . B 77

这个例子中先使用一个字典记录每个球员的得分,然后计算出球队的总分,最后根据得分对球员进行排序并输出排名。使用 Python 的高级排序函数 sorted() 可以方便地实现排序功能。