Python映射之字典

本文介绍了Python中的字典,一种映射数据结构,通过键值对存储数据,不保证顺序。内容包括字典的创建、基本操作如clear、copy、fromkeys、get等方法的使用,以及字典的格式化字符串和遍历方法。

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

序列是按编号对元素进行引用;另一种数据结构用名字来引用值——映射(mapping)。字典是Python中唯一内建的映射类型。字典中的值没有特定的顺序,但是有特定的键(Key)。键可以是数字、字符串甚至是元组。

定义

字典中的键-值对(key:value)作为一项以逗号隔开,放在大括号内。

创建字典、使用字典

1.直接创建

>>> phonebook = {'Ami':'1211','Bli':'2322','Cro':'3211'}
>>> phonebook['Ami']
'1211'
>>> 

2.dict函数建立字典

dict函数(和list、tuple和str一样,是一种类型)可以通过其他映射或者(键:值)对的序列建立字典。
>>> items = [('name','Tom'),('age','41')]
>>> d = dict(items)
>>> d
{'age': '41', 'name': 'Tom'}
>>> d['name']
'Tom'
dict函数还可以用关键字参数创建字典。
>>> d = dict(name='Tom',age='42')
>>> d
{'age': '42', 'name': 'Tom'}
dict函数也可以以映射为参数,建立一个项与映射相同的字典;若参数为空,则建立空字典。

3.基本字典操作

字典的基本行为在很多方面和序列(sequence)类似。
>>> d['age']        #通过键来访问值         序列是用索引访问值
'42'
>>> d['age'] = 40   #通过键来赋值           序列用索引
>>> 
>>> del d['name']   #通过del删除键-值对
>>> 
>>> 'age' in d      #用in查询成员资格       字典用键,序列用值
True
>>> 
>>> d               #自动添加:在用不存在的键赋值时,字典会自动将该键添加到字典中,并进行赋值
{'age': 40}
>>> d['name'] = 'Tom'
>>> d
{'age': 40, 'name': 'Tom'}
>>> 
键类型:键可以是任意不可变类型。

4.字典的格式化字符串

>>> info = {'name':'Ami','sex':'girl'}
>>> '%(name)s is a %(sex)s' % info
'Ami is a girl'
>>> 
此时,字典是只以字符串作为键的。

5.字典方法

(1).clear

>>> d                                  #清空字典
{'age': 40, 'name': 'Tom'}
>>> d.clear()
>>> d
{}
>>> 

(2).copy

>>> x = {'name':'admin','password':'888'}    #返回一个有相同键-值对的字典(这个方法实现的是浅复制(shallow copy),即x,y两个引用指向同一个对象)
>>> x
{'password': '888', 'name': 'admin'}
>>> y = x.copy()
>>> y
{'password': '888', 'name': 'admin'}
>>> 
若要实现深复制(deep copy),可以用copy模块的deepcopy函数完成。

(3).fromkeys

>>> {}.fromkeys(['name','age'])           #用给定键创建字典,并可指定初始化值
{'age': None, 'name': None}
>>> 
>>> dict.fromkeys(['name','age'])
{'age': None, 'name': None}
>>> 
>>> dict.fromkeys(['name','age'],'unknown')
{'age': 'unknown', 'name': 'unknown'}
>>> 

(4).get

>>> d = {'name':'Tom'}                    #通过键值访问值,若不存在该键,以自定义值返回信息
>>> d
{'name': 'Tom'}
>>> d.get('name')
'Tom'
>>> d.get('age')
>>> d.get('age','N/A')
'N/A'

(5).has_key

>>> d = {}                               #和in操作符功能相同
>>> d.has_key('name')
False
>>> d['name'] = 'Tom'
>>> d.has_key('name')
True
>>> 

(6).items和iteritems

>>> d = {'title':'Python Web Site','url':'http://www.python.org'}     #items将字典所有项以列表方式返回,列表中的每一项都表示为(键,值)对的形式
>>> d.items()
[('url', 'http://www.python.org'), ('title', 'Python Web Site')]
>>> 
>>> it = d.iteritems()                                                #iteritems返回一个迭代器对象
>>> it
<dictionary-itemiterator object at 0x0000000003327778>
>>> list(it)
[('url', 'http://www.python.org'), ('title', 'Python Web Site')]

(7)keys和iterkeys

keys方法将字典中的键以列表形式返回,而iterkeys则返回键的迭代器。

(8).pop

>>> d = {'x':1,'y':2}           #pop方法用来获得对应于给定键的值,然后将这个键-值对从字典中移除
>>> d
{'y': 2, 'x': 1}
>>> d.pop('x')
1
>>> d
{'y': 2}
>>> 

(9).popitem

>>> d = {'title':'Python Web Site','url':'http://www.python.org'}    #返回随机的项,并移除该项
>>> d
{'url': 'http://www.python.org', 'title': 'Python Web Site'}
>>> d.popitem()
('url', 'http://www.python.org')
>>> d
{'title': 'Python Web Site'}
>>> 

(10).setdefault

>>> d                           #获取指定键的值;若该键不存在,添加该键并以所给参数为该键赋值,若不指定参数,赋值None
{}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d['age'] = 40
>>> d.setdefault('age',0)
40
>>> d.setdefault('num')
>>> d
{'age': 40, 'num': None, 'name': 'N/A'}
>>> 

(11).update

>>> d = {                                   #update利用一个字典更新字典,提高的字典中的项会被添加到旧字典中,若有相同的键则会进行覆盖
	'title':'Python Web Site',
	'url':'http://www.python.org',
	}
>>> d
{'url': 'http://www.python.org', 'title': 'Python Web Site'}
>>> x = {'title':'Python Language Website'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'title': 'Python Language Website'}
>>> 

(12).values和itervalues

values方法以列表的形式返回字典中的值,itervalues返回值的迭代器。
### Python 字典映射的使用方法与实现 #### 基本概念 Python字典(`dict`)是一种基于哈希表实现的数据结构,支持键值对存储。它的核心特性在于高效的查找速度,这得益于内部使用的哈希算法[^1]。 #### 创建字典并建立映射关系 可以通过多种方式创建字典,并定义键到值之间的映射: ```python # 方法一:直接初始化 my_dict = {"key1": "value1", "key2": "value2"} # 方法二:使用 dict() 函数 my_dict = dict(key1="value1", key2="value2") # 方法三:动态添加键值对 my_dict = {} my_dict["key1"] = "value1" my_dict["key2"] = "value2" ``` 以上代码展示了三种常见的字典创建方式,每种方式都可以用来定义键值对的映射关系[^2]。 #### 访问字典中的值 通过键可以直接访问对应的值: ```python print(my_dict["key1"]) # 输出 'value1' ``` 如果尝试访问不存在的键,则会抛出 `KeyError` 错误。为了避免这种情况,可以使用 `.get()` 方法: ```python value = my_dict.get("nonexistent_key", "default_value") # 如果键不存在,默认返回 'default_value' ``` #### 动态更新字典 字典支持动态修改和扩展其内容: ```python # 更新现有键的值 my_dict["key1"] = "new_value" # 添加新键值对 my_dict["key3"] = "value3" ``` #### 删除字典中的项 可以使用 `del` 或者 `.pop()` 来移除指定的键值对: ```python del my_dict["key1"] # 删除键为 'key1' 的条目 removed_value = my_dict.pop("key2", None) # 移除键为 'key2' 的条目,若不存在则返回默认值 None ``` #### 使用函数作为字典值 除了简单的数据类型外,还可以将函数或其他可调用对象作为字典的值。这种方式常用于事件驱动编程或命令模式设计中: ```python import sys def print_frame_info(): print(sys._getframe().f_code) func_map = { "info": print_frame_info, } # 调用对应的功能 if "info" in func_map: func_map["info"]() ``` 此示例演示了如何利用字典字符串映射到具体的函数执行逻辑[^3]。 #### 遍历字典 有几种不同的方法可以遍历字典的内容: ```python # 遍历所有的键 for key in my_dict.keys(): print(f"Key: {key}") # 遍历所有的值 for value in my_dict.values(): print(f"Value: {value}") # 同时获取键和值 for key, value in my_dict.items(): print(f"{key}: {value}") ``` 这些方法提供了灵活性,可以根据需求选择合适的迭代策略。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值