字典

本文详细介绍Python字典的基本概念、常用操作方法及应用场景,包括键值对的设置要求、字典的增删改查、遍历操作及嵌套使用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典基本知识

字典(Dict)是可变的无序集合,同时是一种以键值对为基本元素的可以存储各种数据类型的集合,用大括号({ })表示字典的开始和结束,元素之间用逗号(,)分隔。
键值对,由键(Key)和值(Value)组成,中间用冒号(:)分隔。采用键值对,可以更加独立而紧密地表示两者之间的关系。从键值对可以看出,字典属于典型的一对一映射关系的数据类型。

  1. 基本格式
{}                        # 空字典
dict1 = {'ajian': 18}
len(dict1)                # 字典元素个数
# 1
dict2 = {1: 'car', 2: 'bus'}
len(dict2)
# 2
  1. 键、值设置要求
    (1)键的设置要求
    a. 唯一性
    一个字典对象里所有的键必须唯一。
dict3 = {1: 'car', 2: 'bus', 3: 'bus'}
len(dict3)
# 2
dict3
# {1: 'car', 2: 'bus'}

把相同键值对的元素保留最后一个。

dict4 = {1: 'car', 2: 'bus', 2: 'train'}
len(dict4)
# 2
dict4
# {1: 'car', 2: 'train'}

字典只保留了键相同的最后一个元素。
b. 不可变性
在字典使用过程中,不能对元素的键进行直接修改。修改方式之后介绍。
(2)值的设置要求
字典对象的键值对的值可以是Python语言支持的任何对象。

  1. 字典的基本方法
方法名称功能描述
clear字典清空
copy复制生成另一个字典
fromkeys使用给定的键建立新的字典,每个键默认对应的值为None
get根据指定键,返回对应值,访问键不存在时,返回None
items以元组数组的形式返回字典中的元素
keys以可以浏览的类似列表的形式返回字典中的键
pop删除指定键的元素,并返回指定键对应的值
popitem随机返回元素,并删除元素
setdefault当字典中键不存在时,设置键值对;当存在键时,获取键对应的值
update利用一个字典更新另外一个字典
values以可以浏览的类似列表形式返回字典中的值

字典元素增加

  1. 利用赋值给字典增加元素
dict1 = {'ajian': 18, 'atian': 20}
dict1['afei'] = 8
print(dict1)
# {'ajian': 18, 'atian': 20, 'afei': 8}
  1. 利用setdefault()方法给字典增加元素
    setdefault()使用格式为D.setdefault(k[,d])。其中,D代表字典对象,k代表新增键,d代表新增键对应的值(如果不提供值,则默认值为None)。
dict1 = {'ajian': 18, 'atian': 20}
dict1.setdefault('afei': 8)
# 8
print(dict1)
# {'ajian': 18, 'atian': 20, 'afei': 8}
dict1.setdefault('axin')
print(dict1)
# {'ajian': 18, 'atian': 20, 'afei': 8, 'axin': None}

注意: setdefault()方法新增键值对时,若指定键已经存在,则显示已经存在键的值。

字典值查找

  1. 字典名+[Key]查找
dict2 = {'ajian': 18, 'atian': 20, 'afei': 8}
print(dict2['atian'])
# 20
  1. 利用get()方法查找
    使用格式为D.get(k[,d])。
dict2 = {'ajian': 18, 'atian': 20, 'afei': 8}
print(dict2.get('atian'))
# 20

get()方法在指定键不存在时返回空值,而不是报错。

字典值修改

  1. 利用赋值修改键对应的值
dict1 = {'ajian': 18, 'atian': 20, 'afei': 8}
dict1['afei'] = 22
print(dict1)
# {'ajian': 18, 'atian': 20, 'afei': 22}
  1. 利用update()方法修改键对应的值
    update()方法的使用格式为D.update(d1)。D为更新的字典,d1为提供更新内容的字典。若d1里提供的键在D里存在,则更新D里对应的键值;若d1里提供的键不在D里,则增加键值对。
dict1 = {'ajian': 18, 'atian': 20, 'afei': 8}
dict2 = {'ajian': 20, 'atian': 25}
dict1.update(dict2)
print(dict1)
# {'ajian': 20, 'atian': 25, 'afei': 8}
dict1.update({'axin': 24})
print(dict1)
# {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}

字典元素删除

  1. 利用del函数删除
dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
del(dict1['axin'])
print(dict1)
# {'ajian': 20, 'atian': 25, 'afei': 8}
  1. 利用pop()方法删除
    pop()方法的使用格式为D.pop(k[,d])。
dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
pop1 = dict1.pop('axin')
print(pop1)
# 24
print(dict1)
# {'ajian': 20, 'atian': 25, 'afei': 8}
  1. 利用popitem()方法删除
    popitem()方法的使用格式为D.popitem()。D代表字典对象,随机返回一个键值对元组,并在字典里删除对应的元素。
dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
k_v = dict1.popitem()
print(k_v)
# ('axin', 24)
print(dict1)
# {'ajian': 20, 'atian': 25, 'afei': 8}

字典遍历操作

  1. 遍历所有键值对
    利用items()方法遍历所有键值对。使用格式为D.items()。
dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
for k_v in dict1.items():
    print(k_v)
# ('ajian', 20)
# ('atian', 25)
# ('afei', 8)
# ('axin', 24)

print(dict1.items())
# dict_items([('ajian', 20), ('atian', 25), ('afei', 8), ('axin', 24)])

print(type(dict1.items))
# <class 'builtin_function_or_method'>
  1. 遍历所有的键
    1)利用字典变量循环遍历
dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
for k in dict1:
    print(k)
# ajian
# atian
# afei
# axin 

2)利用keys() 方法获取字典键

dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
for k in dict1.keys():
    print(k)
# ajian
# atian
# afei
# axin 
  1. 遍历所有的值
    1)通过键遍历值
dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
for k in dict1:
    print(dict1[k])
# 20
# 25
# 8
# 24

2)利用values()方法获取字典值

dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
for v in dict1.values():
    print(v)
# 20
# 25
# 8
# 24

其他操作方法

  1. in成员操作
    字典的元素对象、键对象、值对象,其实质上构成了相应的集合,由此可以通过集合成员操作符号进行相关操作。
dict1 = {'ajian': 20, 'atian': 25, 'afei': 8, 'axin': 24}
if 'ajian' in dict1.keys():
    print('存在')
else:
    print('不存在')
#  存在
  1. clear()方法
dict3 = {'aa': 'a', 'bb': 'b'}
dict3.clear()
print(dict3)
# {}
  1. copy()方法
    通过copy()方法的复制,可以避免字典变量之间直接赋值指向同一个地址的问题。
    注意: 字典的copy()复制是深度复制,复制后产生的两个字典变量完全没有关系,互不影响。
  2. fromkeys()方法
    使用格式为D.fromkeys(iterable),D代表字典变量,iterable代表列表对象,用于指定字典键,生成的D的键对应的值默认是None。
dict9 = {}.fromkeys(['ajian', 'atian', 'afei'])
print(dict9)
# {'ajian': None, 'atian': None, 'afei': None}

字典嵌套

字典可以嵌套字典,也可以与列表互相嵌套。具体场景具体分析。
优点:

  1. 可以很方便地体现数据之间的关系。
  2. 体现了字典记录数据的灵活性。如横向的可以记录几条数据,竖向的也可以记录几条数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rocjian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值