注:该文档仅为博主个人学习理解,如有错误,欢迎评论区指正,谢谢。
为什么要用字典
举一个简单的例子:假设有如下名单
names = ['zhangsan','lisi','Alice','Beth']
列表list1分别存放他们的电话号码
list1 = [2351,1490,9482,4393]
对于列表我们想要拿到他们对于的电话号码,我们需要这样做
print(list1[names.index('lisi')])
如果我们想要直接通过名字拿到电话号码,就需要用到新的数据类型**字典
**
对于字典,我们可以通过其特定的**键
(姓名),从而简便的得到对应的值
**(电话号码)
字典的创建
namephone = {'zhangsan':2351,'lisi':1490,'Alice':9482,'Beth':4393}
整个字典放于花括号之中,由键与其对应的值组成,这种键值对成为项(item),项与项之间用逗号分割
用函数dict创建
items = [('zhangsan',2351),('lisi',1490)]
d = dict(items)
创建的要求:
-
数据本身是容器
-
容器中的元素还必须是一个容器
-
容器中的容器必须只有两个元素
-
这两个元素的第一个元素必须是不可变数据类型
字典的特征
-
字典是可变的容器型数据类型。(增删改)
-
Python3.6之前字典是无序的容器型数据类型;
-
Python3.6之后规定字典是有序的容器型数据类型(虽然字典有序,但是没有下标)
-
字典中的元素是以键值对(key: value)形式存在的。
-
字典中的键必须是不可变的数据类型,键是解释说明的作用。
-
字典中的值可以是任意数据,值是最终想要的数据。
-
字典以{}作为容器符号,元素使用逗号分隔,数据类型dict
基本的字典操作
-
len(d)返回字典d包含的项数
-
d[k]返回与k相关联的值
-
d[k] = v 将字典中的键k与v关联为值
-
del d[k] 删除键为k的所有项
-
k in d 检查字典中是否包含键为k的项
键的类型 :字典中的键只能为不可变的数据类型,如浮点数,字符串,元组
字典不支持拼接、重复等操作
将字符串格式设置功能用于字典
>>>print(f'zhangsan的电话号码是{d["zhangsan"]}')
zhangsan的电话号码是2351
字典中常用的方法
clear
删除字典所有项
d.clear()
copy
d1=d.copy()
formkeys
前面说了,用dict可以创建字典,但是dict创建字典有太多的限制了,
就比如说我们想要对一个列表创建字典,将列表中所有的元素都添加为字典的键,应该如何做呢?
我们可以使用formkeys
a = ['name','age']
print(dict.fromkeys(a))
<<< {'name': None, 'age': None}
a = ['name','age']
b = ['sm']
print(dict.fromkeys(a,b))
<<< {'name': ['sm'], 'age': ['sm']}
eval
能将字符串类型的任意数据,表达式转换为其原来的样子,让其具有原来的功能。
a = '{"name":"zhangsan"}'
print(eval(a))
<<< {'name': 'zhangsan'}
get
用d[key] 可以轻松得到字典中的值,但如果字典当如不存在key时候就会报错,而get方法就可以很好的解决这个问题了,当字典之中不存在该键时候,会返回None
items = [('zhangsan',2351),('lisi',1490)]
item = dict(items)
print(item.get(2))
<<< None
items
字典调用这个方法会返回一个所以关于该字典所以项的列表.
a = {'a':1,'b':2,'c':3,'d':4,'e':5}
b = a.items()
print(b)
<<< dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
我们可以注意到该返回值是一个字典视图的特殊类型。它可以用来迭代,你也可以用来确定其长度以及对其执行成员资格检查。
keys
字典调用keys,会返回字典中所有的键,结果类型也为字典视图。同样也可以来确定其长度以及对其执行成员资格检查。同理values是返回所有的值组成的字典视图。
a = {'a':1,'b':2,'c':3,'d':4,'e':5}
b = a.keys()
c = len(b)
print(b)
print(c)
if "a" in a:
print(1)
<<<
dict_keys(['a', 'b', 'c', 'd', 'e'])
5
1
pop
可以用于获取与指定键相关的值,并将键值从该字典中删除。
a = {'a':1,'b':2,'c':3,'d':4,'e':5}
print(a.pop('a'))
print(a)
<<< 1
{'b': 2, 'c': 3, 'd': 4, 'e': 5}
当然还有update用一个字典的项来更新另外一个字典等等。