Python 中字典dict详解

一、字典(dict)概念

字典是另一种可变容器模型,且可存储任意类型对象如字符串、数字、元组等其他容器模型,因为字典是无序的所以不支持索引和切片。

二、字典(dict)的定义

一般格式:

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示

d = {key1 : value1, key2 : value2, key3 : value3 }

例子

dict_data = {'name': '王华', 'age': 23, 'sex': '男', '班级': '计算机一班'}

结果如下:
image.png
:::info
注意:dict 作为Python的关键字和内置函数,变量名不建议命名为 dict 。
:::

空字典:

格式:字典名={ } 或者 字典名= dict{ }

# 使用大括号{}来创建空字典
dict_data = {}
# 打印字典
print(dict_data)
# 查看字典类型
print(type(dict_data))

以上代码输出结果为:

{}

<class 'dict'>

注意:

在使用 dict() 创建字典时,在小括号 () 内要以 key=value 的形式编写。

  • key不可以重复,否则只会保留第一个;
  • value值可以重复;
  • key可以是任意的数据类型,但不能出现可变的数据类型,保证key唯一;
  • key一般形式为字符串。

三、字典的特性

dict()是Python内置的一个数据类型,也被称为字典或映射,它是一个无序的键值对集合。每个键(key)必须是唯一的,而值(value)可以是任意的Python对象。下面是dict()的一些主要特性:

1.键值对集合

一个dict()是由一系列键值对组成的无序集合,其中每个键对应一个唯一的值。下面是一个简单的例子:

# 创建一个字典
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
print(my_dict)     
# 打印结果如下
{'apple': 2, 'banana': 3, 'orange': 4}

2.可变性

dict()是可变的对象,这意味着可以添加、删除或修改它的键值对。下面是一个例子:

# 修改字典中的值
my_dict['apple'] = 5

# 打印结果如下
{'apple': 5, 'banana': 3, 'orange': 4}

3.键的唯一性

dict()中的每个键必须是唯一的。如果试图将一个已经存在的键再次添加到dict()中,将会覆盖该键对应的原值。下面是一个例子:

# 添加一个新的键值对
my_dict['pear'] = 1
# 尝试将一个已经存在的键再次添加到字典中
my_dict['apple'] = 6

# 打印结果如下
{'apple': 6, 'banana': 3, 'orange': 4, 'pear': 1}

4.值的任意性

dict()中的值可以是任意Python对象,包括其他的dict()、列表、元组、数字、字符串等。下面是一个例子:

# 字典中的值可以是列表
my_dict['fruits'] = ['apple', 'banana', 'orange']
# 字典中的值可以是字典
my_dict['colors'] = {'apple': 'red', 'banana': 'yellow', 'orange': 'orange'}


# 输出结果如下
'fruits': ['apple', 'banana', 'orange'],
'colors': {'apple': 'red', 'banana': 'yellow', 'orange': 'orange'}}

5.字典的长度

len()函数可以用于获取字典中键值对的数量。下面是一个例子:

# 获取字典中键值对的数量
print(len(my_dict))


# 输出结果如下
6

6.键的类型

键可以是任意可哈希(hashable)的对象,例如数字、字符串、元组等。不过,列表和字典这样的可变对象是不能作为键的。下面是一个例子:

# 使用元组作为键
my_dict[('apple', 'red')] = 2

# 尝试使用列表作为键
# my_dict[['apple', 'red']] = 2  # 会报错

7.字典的迭代

可以使用for循环迭代字典的键、值或键值对。下面是一个例子:

# 迭代字典的键
for key in my_dict:
    print(key)
# 迭代字典的值
for value in my_dict.values():
    print(value)
# 迭代字典的键值对
for key, value in

四、字典的内置函数

Python中的字典(dict())有一些内置的函数可以用于操作和处理字典:

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

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
length = len(my_dict)

print(length)  # 输出:3

2.keys():返回字典中所有的键。

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
keys = my_dict.keys()

print(keys)  # 输出:dict_keys(['apple', 'banana', 'orange'])

3.values():返回字典中所有的值

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
values = my_dict.values()

print(values)  # 输出:dict_values([2, 3, 4])

4.items():返回字典中所有的键值对。

# 此方法也是字典转列表
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
items = my_dict.items()

print(items)  # 输出:dict_items([('apple', 2), ('banana', 3), ('orange', 4)])

5.clear():清空字典中所有的键值对。

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
my_dict.clear()

print(my_dict)  # 输出:{}

6.copy():返回字典的浅拷贝(只拷贝顶层对象)。

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
new_dict = my_dict.copy()

print(new_dict)  # 输出:{'apple': 2, 'banana': 3, 'orange': 4}

7.pop(key[, default]):删除并返回字典中指定键的值,如果键不存在,返回指定的默认值(默认为None)。

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
value = my_dict.pop('apple')

print(value)  # 输出:2
print(my_dict)  # 输出:{'banana': 3, 'orange': 4}

value = my_dict.pop('pear', 0)
print(value)  # 输出:0

8.popitem():随机删除并返回字典中的一个键值对。

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
item = my_dict.popitem()

print(item)  # 输出:('orange', 4)
print(my_dict)  # 输出:{'apple': 2, 'banana': 3}

9.update(other_dict):用另一个字典中的键值对更新当前字典,如果存在相同的键,则覆盖当前字典中的值。

# 语法
my_dict.update(other_dict)

# 示例
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
new_dict = {'pear': 1, 'banana': 5}

my_dict.update(new_dict)
print(my_dict)  # 输出:{'apple': 2, 'banana': 5, 'orange': 4, 'pear': 1}

10.删除字典del

可以使用 **del **关键字删除一个字典或字典中的键值对。

# 删除整个字典,只需使用 del 加上字典的名称
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
del my_dict  # 删除整个字典


# 删除字典中的某个键值对,需要使用 del 加上字典中需要删除的键
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
del my_dict['banana']  # 删除键为 'banana' 的键值对

注意:需要注意的是,del 关键字删除的是变量本身,而不是其指向的对象。因此,如果有其他变量也指向同一个字典对象,那么删除其中一个变量后,其他变量仍然可以访问该字典对象
例如:

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
other_dict = my_dict
del my_dict  # 删除 my_dict 变量
print(other_dict)  # 输出:{'apple': 2, 'banana': 3, 'orange': 4}

11.str()函数

str() 函数将字典对象转换成一个字符串,字符串的格式为 {key1: value1, key2: value2, …}

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
my_str = str(my_dict)
print(my_str)  # 输出:{'apple': 2, 'banana': 3, 'orange': 4}

举例:列表(list)转字典(dict)

my_list = [('apple', 2), ('banana', 3), ('orange', 4)]
my_dict = dict(my_list)
print(my_dict)  # 输出:{'apple': 2, 'banana': 3, 'orange': 4}

五、字典的三种取值方式

在Python中,字典(dict())有三种取值方式:

my_list = [('apple', 2), ('banana', 3), ('orange', 4)]
my_dict = dict(my_list)
print(my_dict)  # 输出:{'apple': 2, 'banana': 3, 'orange': 4}

1.通过键获取值

可以通过字典的键获取对应的值,用法如下:

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
value = my_dict['apple']

print(value)  # 输出:2

2.使用get()方法获取值

也可以使用get()方法获取字典中对应键的值,如果键不存在,返回指定的默认值(默认为None),用法如下:

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
value = my_dict.get('apple')
print(value)  # 输出:2

value = my_dict.get('pear', 0)
print(value)  # 输出:0

3.遍历字典获取键和值

可以遍历字典获取每个键和对应的值,用法如下:

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
for key, value in my_dict.items():
    print(key, value)

# 输出:
# apple 2
# banana 3
# orange 4

4.注意

需要注意的是,如果尝试通过不存在的键获取值,会触发KeyError异常。因此,在获取字典中的值时,最好先判断键是否存在,可以使用in关键字或**keys()**方法来实现,例如:

my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
if 'apple' in my_dict:
    print(my_dict['apple'])  # 输出:2

if 'pear' not in my_dict.keys():
    print('pear is not in the dict')

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年9月12日
下一篇 2023年9月12日

相关推荐