字典(dict)是 python 中的基础数据类型之一,字典的设计并不复杂,我们经常会用到这种数据类型。
同时,字典也有一些比较实用的情景。
学习任何一种编程语言,基础数据类型都是必备的底层基础,今天,我们来学习下 Python 中字典的使用。
基本用法
在 Python 中,字典是一种可以将相关的两个信息关联起来的操作,并且字典可存储的信息量几乎不受限制。
字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。
- 创建字典
字典是以 key、value 的形式创建的。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
dict = {key1:value1, key2:value2}
一般情况下,字典的创建可以有以下几种方式:
# 创建一个空的字典
my_dict1 = {}
# 创建 key 值为整数的字典
my_dict2 = {1: 'apple', 2: 'ball'}
# 创建 key 值为 string 的字典
my_dict3 = {'name1': 'apple', 'name2': 'ball'}
# 创建 key 值为 数字 和 string 混合的字典
my_dict4 = {'name': 'apple', 1: [2, 4, 3]}
# 用 dict() 函数创建字典
my_dict5 = dict({1:'apple', 2:'ball'})
# 以元组的形式组成序列创建字典
my_dict6 = dict([(1,'apple'), (2,'ball')])
print('my_dict1:', my_dict1)
print('my_dict2:', my_dict2)
print('my_dict3:', my_dict3)
print('my_dict4:', my_dict4)
print('my_dict5:', my_dict5)
print('my_dict6:', my_dict6)
----------------------------
my_dict1: {}
my_dict2: {1: 'apple', 2: 'ball'}
my_dict3: {'name1': 'apple', 'name2': 'ball'}
my_dict4: {'name': 'apple', 1: [2, 4, 3]}
my_dict5: {1: 'apple', 2: 'ball'}
my_dict6: {1: 'apple', 2: 'ball'}
- 获取字典中的元素
通过 key 来获取 value
获取字典中的元素,可以直接通过 key 值来获取对应的 value,如下:
player = {'name': 'messi', 'age': 36 , 1: [2, 4, 3], '俱乐部':'巴萨'}
print(player['name'])
print(player('name'))
结果如下:
messi
messi
如果字典的key值中没有该元素,则不能获取相应的 value,这种情况下将会报错。
print(player['name1'])
# 输出: KeyError Traceback (most recent call last) <ipython-input-4-eedb02e2ace8> in <module> ----> 1 print(player['name1']) KeyError: 'name1'
- 在字典中修改或添加元素
在字典中,可以修改已有 key 对应的 value 值,或者添加新的 key-value 键值对数据,如下:
player = {'name': 'messi', 'age': 36 , 1: [2, 4, 3], '俱乐部':'巴萨'}
# 修改已有 key 对应的 value 的值
player['club']='大巴黎'
# 添加新的 key-value 数据组
player['gender'] = 'male'
# 结果如下
{'name': 'messi', 'age': 36 , 1: [2, 4, 3], '俱乐部':'大巴黎', 'gender': 'male'}
- 从字典中删除元素
从字典中删除元素,或者删除整个字典,有以下一些方式。
pop() 方法
移除字典数据pop()方法的作用是:删除指定给定键所对应的值,返回这个值并从字典中把它移除。
# 使用 pop()方法来删除
player = {'name': 'messi', 'age': 36 , 1: [2, 4, 3], '俱乐部':'大巴黎', 'gender': 'male'}
player.pop('age')
结果如下:
{'name': 'messi', 1: [2, 4, 3], '俱乐部':'大巴黎', 'gender': 'male'}
del 方法
# 使用 del 方法来删除
player = {'name': 'messi', 'age': 36 , 1: [2, 4, 3], '俱乐部':'大巴黎', 'gender': 'male'}
del player[1]
结果如下:
{'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
popitem() 方法
# 使用 popitem()方法来删除
player = {'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
player.popitem()
结果如下:
{'name': 'messi', 'age': 36 , '俱乐部':'大巴黎'}
clear()方法
# 使用 clear()方法来清空字典中的所有数据,返回的是一个空字典
player = {'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
player.clear()
结果如下:
{}
字典内置函数&方法
- len()
len(dict)计算字典元素个数,即键的总数。
player = {'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
len(player)
# 输出如下:
4
- str(dict)
输出字典可打印的字符串表示
player = {'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
str(player)
# 输出如下
{'name': 'messi', 'age': 36, '俱乐部': '大巴黎', 'gender': 'male'}
- type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型
player = {'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
type(player)
# 输出如下
<class 'dict'>
- copy, keys, values, items 方法
player = {'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
print('copy:', player.copy())
print('keys:', player.keys())
print('values:', player.values())
print('items:', player.items())
# 结果如下
copy: {'name': 'messi', 'age': 36 , '俱乐部':'大巴黎', 'gender': 'male'}
keys: dict_keys(['name', 'age', '俱乐部', 'gender'])
values: dict_values(['messi', 36, '大巴黎', 'male'])
items: dict_items([('name', 'messi'), ('age', 36), ('俱乐部', '大巴黎'), ('gender', 'male')])
- zip()方法
seq = ['name', 'age', 'city']
value = ['messi', 36, 'Paris']
player = dict(zip(seq, value))
# 结果如下
{'name': 'messi', 'age': 36, 'city': 'Paris'}