一,概念理解
在寻常意义的理解中,说到字典可能就会想到新华字典、牛津字典等,字典比较重要的特性就是能通过一个明显的索引去找到对应的内容,如通过“zhao”这个注音去找到“找”这些字。Python的字典数据类型有类似的意思,只不过这次是把这种索引也作为一个值存放了起来。
1,具体含义
(1)字典由{}来包含内容 (2)字典包含内容的形式为键值对(key:value)的形式,每个键值对之间用逗号,隔开,如下
a = {'姓名': '张三', '年龄': 28}
2,特点
(1)可变,不是序列 (2)键需为不可变类型,如数字、字符串、元组;值无限制 (3)键重复会导致前面的值被覆盖;值可重复
二,创建字典
1,直接在空字典里面写键值对
a = {'姓名': '张三', '年龄': 28}
print(a)
输出为
{'姓名': '张三', '年龄': 28}
2,定义空字典,然后往里面加键值对
a = {}
a['姓名'] = '张三'
a['年龄'] = 28
print(a)
输出为
{'姓名': '张三', '年龄': 28}
3,把键作为关键字传入
a = dict(姓名="张三", 年龄=28)
print(a)
输出为
{'姓名': '张三', '年龄': 28}
4,利用可迭代对象
a = dict([("姓名", "张三"), ("年龄", 28)])
print(a)
输出为
{'姓名': '张三', '年龄': 28}
5,通过zip()把对应元素打包成元组
a = dict(zip(["姓名", "年龄"], ["张三", 28]))
print(a)
输出为
{'姓名': '张三', '年龄': 28}
6,利用类方法fromkeys()
dic1 = dict.fromkeys(("name", "age", "sex"))
print(dic1)
dic2 = dict.fromkeys(("name", "age", "sex"), "I
don't know!")
print(dic2)
输出为
{'name': None, 'age': None, 'sex': None}
{'name': "I don't know!", 'age': "I don't know!", 'sex': "I don't know!"}
三,相关内置函数
1,dict(**kwarg) / dict(mapping) / dict(iterable)
作用:创建一个字典并返回,可以是传入关键字、函数方式、可迭代对象来创建
2,zip(*iterables)
作用:传入可迭代对象,取出每个可迭代对象的第i个元素组成第i个元组,返回这些元组的迭代器
result1 = zip("abcd", "efgh")
print(list(result1))
result4 = zip("abcd")
print(list(result4))
输出为
[('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', 'h')]
[('a',), ('b',), ('c',), ('d',)]
3,classmethod fromkeys(iterable[, value])
作用:创建一个新字典,以 iterable 的元素作为键,value 作为值(默认为None)
dic2 = dict.fromkeys(("name", "age", "sex"), "I don't know!")
print(dic2)
输出为
{'name': "I don't know!", 'age': "I don't know!", 'sex': "I don't know!"}
四,访问和修改字典
访问:类似索引访问的方法,只是把放索引的位置换成放key值,即可访问相关的value值 修改:类似索引修改的方法,只是把放索引的位置换成放key值,即可修改相关的value值,没有找到则新增此键值对
a = dict([("姓名", "张三"), ("年龄", 28)]))
print(a["姓名"])
a["姓名"] = "阿鸡"
print(a)
输出为
张三
{'姓名': '阿鸡', '年龄': 28}
五,字典的对象方法
1,查
(1)dict.keys() 作用:返回所作用字典的所有键的视图对象
怎么理解视图对象? 一种特殊的数据格式,就相当于一个投影,所以原字典内容变化时,对应的视图对象也可能发生变化
a = dict([("姓名", "张三"), ("年龄", 28)])
b = a.keys()
print(b)
print(list(b))
print("-----------------")
a["练习"] = "两年半"
print(b)
print(list(b))
输出为
dict_keys(['姓名', '年龄'])
['姓名', '年龄']
-----------------
dict_keys(['姓名', '年龄', '练习'])
['姓名', '年龄', '练习']
(2)dict.values() 作用:返回所作用字典的所有值的视图对象
a = dict([("姓名", "张三"), ("年龄", 28)])
b = a.values()
print(b)
print(list(b))
print("-----------------")
a["姓名"] = "阿鸡"
print(b)
print(list(b))
输出为
dict_values(['张三', 28])
['张三', 28]
----------------
dict_values(['阿鸡', 28])
['阿鸡', 28]
(3)dict.items() 作用:返回返回所作用字典的所有键值对的视图对象
a = dict([("姓名", "张三"), ("年龄", 28)])
b = a.items()
print(b)
print(list(b))
print("-----------------")
a["姓名"] = "阿鸡"
print(b)
print(list(b))
输出为
dict_items([('姓名', '张三'), ('年龄', 28)])
[('姓名', '张三'), ('年龄', 28)]
----------------
dict_items([('姓名', '阿鸡'), ('年龄', 28)])
[('姓名', '阿鸡'), ('年龄', 28)]
(4)dict.get(key[, default]) 作用:返回指定的键 key 对应的值,key不存在时,返回default(默认None)
a = dict([("姓名", "张三"), ("年龄", 28)])
print(a.get("姓名"))
输出为
张三
2,改
(1)dict.update([other]) 作用: 使用other传入的键值对更新字典,如果jian相同,则覆盖原有键; other需要是字典对象、包含键值对的可迭代对象、关键字参数; 原有修改,无返回值
a = dict([("姓名", "张三"), ("年龄", 28)])
a.update({"练习" : "两年半"})
print(a)
输出为
{'姓名': '张三', '年龄': 28, '练习': '两年半'}
(2)dict.pop(key[, default]) 作用:移除指定的键key,并返回对应的值value
a = dict([("姓名", "张三"), ("年龄", 28)])
print(a.pop("姓名"))
print(a)
输出为
张三
{'年龄': 28}
(3)dict.popitem() 作用:从字典中移除最后一个键值对, 并返回它们构成的元组
a = dict([("姓名", "张三"), ("年龄", 28)])
print(a.popitem())
print(a)
输出为
('年龄', 28)
{'姓名': '张三'}
(4)dict.clear() 作用:移除字典中的所有元素,无返回值
a = dict([("姓名", "张三"), ("年龄", 28)])
a.clear()
print(a)
输出为
{}
3,其他
(1)dict.copy() 作用:返回原字典的浅拷贝
a = dict([("姓名", "张三"), ("年龄", 28)])
b = a.copy()
print(b)
输出为
{'姓名': '张三', '年龄': 28}