Python中关于字典(dict)的基本操作

1.字典的定义

(1)特点

  • 是一个无序的集合,不支持索引访问以及切片操作
  • 每一个元素由两部分,键、值组成
  • 用大括号来表示这一数据类型
  • 可以存放任意的对象类型

(2)创建

#定义空字典
a={}
b=dict()

#定义普通字典(任意对象类型都可以)
c={"yx": 12, "xz": 23, "zwa": 35}  
  • 注意1 创建字典时的键名不允许重复(若有重复,只会自动保留一个,其他的则被忽略)
dt={"yx": 12, "xz": 23, "zwa": 35, "yx": 37}
dt

输出结果为:

{'yx': 37, 'xz': 23, 'zwa': 35}  #重复定义的第一个键值对被忽略
  • 注意2 键与值的数据类型,键(不可变数据类型),值(任意数据类型)
dt={"yx": 12, "xz": 23, [11, 22]: 35}  #列表是可变数据类型,所以报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
  • 不可变数据类型:当改变某个值的时候,它的内存地址也会跟着改变,称之为不可变数据类型
x=2      #不可变数据类型的示例
id(x)
x=3
id(x)
140713320105664    #内存地址发生了改变
140713320105696

2.字典的访问

  • 访问格式:字典名称[键名]
c["yx"]
c["zwa"]

c["kk"]   #访问一个不存在的键名

输出结果为:

12
35

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'kk'

3.字典的遍历

(1)遍历键名

  • 普通遍历
dt={"yx": 12, "xz": 23, "zwa": 35} 

for i in dt:
	print(i)

输出结果为:

yx 
xz 
zwa
  • 用方法遍历
for i in dt.keys():
	print(i)

输出结果为:

yx 
xz 
zwa

(2)遍历值

  • 普通遍历
for i in dt():
	print(dt[i])

输出结果为:

12
23
35
  • 用方法遍历
for i in dt.values():
	print(i)

输出结果为:

12
23
35

(3)遍历键值对

  • 用方法遍历1
for i in dt.items():
	print(i)

输出结果为:

('yx', 12)
('xz', 23)
('zwa', 35)
  • 用方法遍历2
for k,v in dt.items():
	print(k,v)

输出结果为:

yx 12
xz 23
zwa 35

4.字典方法

方法 功能
dict.clear() 删除字典内所有元素
dict.copy() 返回一个字典的浅复制
dict.keys() 以列表返回一个字典所有的键
dict.values() 以列表返回字典中的所有值
dict.items() 以列表返回可遍历的(键,值)元组数组
dict.update(dict2) 把字典dict2的键/值对更新到dict里
dict.pop(key[,default]) 删除字典给定键key所对应的值,返回值为被删除的值。key必须指定。否则返回default值
dict.popitem() 随机返回并端除字典中的一对键和值。返回的是元组类型
dict.get(key,default=None) 返回指定键的值,如果值不在字典中返回default值
dict.fromkeys(seq,val) 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.setdefault(key,default=None) 和get()类似,如果键不存字典中,将添加键并将值设为default

测试用例(1)

dt={"yx": 12, "xz": 23, "zwa": 35} 

dt.clear()
dt
{}

测试用例(2)

dt={"yx": 12, "xz": 23, "zwa": 35} 
dt.copy()
{"yx": 12, "xz": 23, "zwa": 35}

测试用例(3)

dt.keys()
dict_keys(['yx', 'xz', 'zwa'])

测试用例(4)

dt.values()
dict_values([12, 23, 35])

测试用例(5)

dt.items()
dict_items([('yx', 12), ('xz', 23), ('zwa', 35)])

测试用例(6)

dt.update({55: 33, 99: 111})
dt
{'yx': 12, 'xz': 23, 'zwa': 35, 55: 33, 99: 111}

测试用例(7)

dt.pop(55)
dt
33
{'yx': 12, 'xz': 23, 'zwa': 35, 99: 111}

测试用例(8)

dt.popitem()
dt
(99, 111)
{'yx': 12, 'xz': 23, 'zwa': 35}

测试用例(9)

dt.get("yx")
dt.get(11, "aa")  #若值不在字典,返回的default值可以自定义
dt.get(22)        #也可以不定义default值,默认为None
 12
'aa'

测试用例(10)

dict.fromkeys([11, 22], 100)
{11: 100, 22: 100}

测试用例(11)

dt.setdefault(66, 88)
dt
dt.setdefault(77)
dt
88
{'yx': 12, 'xz': 23, 'zwa': 35, 66: 88}
{'yx': 12, 'xz': 23, 'zwa': 35, 66: 88, 77: None}
  • 注意1 del也可以进行删除操作
del dt[77]   #删除元素
dt

del dt   #删除字典
dt

输出结果为:

{'yx': 12, 'xz': 23, 'zwa': 35, 66: 88}

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'dt' is not defined
  • 注意2 也可通过 字典名[键名] 来直接修改字典中的元素
dt[99]=100  #当修改字典的值时,若指定的键名不存在,相当于在字典中添加这一元素
dt

dt[66]=77
dt

输出结果为:

{'yx': 12, 'xz': 23, 'zwa': 35, 66: 88, 99: 100}

{'yx': 12, 'xz': 23, 'zwa': 35, 66: 77, 99: 100}

猜你喜欢

转载自blog.csdn.net/Zachary_H/article/details/105443596
今日推荐