字典
基本知识
- Python中的字典和你小时候查的字典虽然内容上和形式上有所差别,但是在本质上有相似之处;回想一下,当时自己查字典的时候时如何查的,大概有两种方法吧,通过拼音索引或者通过部首索引;使用这些查找到后的内容就是自己想要的内容。
- 类比我们可知:Python中的字典是一种映射类型,是一个无序的集合(不能通过下标进行索引);一个字典使用 { } 来包含内部元素;内部的元素为键值对,每一个元素都需要一个键(key)和一个值(value)。
- 举例:
a = {"a":1, "b":2, "c":3 }
其中元素使用逗号隔开;"a"、"b"、"c"分别为三个元素的键(key),1、2、3分别为三个元素的值
要访问字典中的值需要通过键来访问
- 注意:
- 在同一个字典中,key必须是唯一的,但是value可以有重复的
- 例如:a = {“a”:1, “b”:1, “c”:1 }
- 原因:
- 当值有重复时,这是毫无问题的,不会影响任何一个元素的访问,而且访问任何一个元素都是明确的,这就比如用一个字典来存储名字(key)和成绩(value),不同人的成绩可能相同,但是名字不会相同(一般情况下)
- 当键有重复时,你使用这个重复的键去访问值,此时就会引起冲突,因为不知道是返回那个值。
- 作为键的数据类型的要求:不可变类型,例如 list是可变的,不能作为键
- 值是可以修改的
函数
1)创建字典
空字典:a = {}或者a = dict()
普通字典:a = {"a":1, "b":2, "c":3 }或者a = dict([("a",1),("b",2),("c",3)])传入一个列表,列表中的每一个元素为一个二元组,将每一个二元组的第一个值作为键,第二个作为值。
--------------------------------------------------------------------------------------------
2)通过键访问、修改、删除对应的值或者整个元素
举例:
a = {"a":1, "b":2, "c":3 }
print(a["a"])
a["b"] = 2.0
print(a["b"])
del a["c"]
print(a)
del a
print(a)
-----------------------------------------------------------------------------------------------
3) dict.fromkeys(seq, [,value])
功能:创建一个新字典。seq 为一个序列(可以为一个元组、列表等),在调用dict.fromkeys()时,会将seq的元素分别作为字典不同元素的key, value是可选的(默认为None),作为每个元素的值(这个值是所有元素共用的)
举例:
seq = ("a", "b", "c")
a = dict.fromkeys(seq)
print(a)
b = dict.fromkeys(seq, 1)
print(b)
c = dict.fromkeys(seq,[1,2,3])
print(c)
注意:
dict是Python内置的关键字,所以我们可以直接使用dict调用这个方法,但是我们也可以通过任何一个字典实例来调用这个方法,所以这就会引出一个问题,这个创建的新字典保存到哪里了呢?
很明显,不会保存到调用它的字典里,因为,不使用字典实例也可以调用;实际上,这个方法只是把新字典作为返回值返回,所以要使用新的变量来接收这个新字典。
a = {}
seq = ("a", "b", "c")
b = a.fromkeys(seq)
print("a : %s \n b: %s"%(str(a), str(b)))
-----------------------------------------------------------------------------------------------
4) dict.get(key, [,default=None])
功能: 使用key获取字典中对应的值,若不存在则返回默认值None,也可以自己指定不存在时的返回值
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.get("a")
print(b)
c = a.get("d")
print(c)
d = a.get("d", "haha")
print(d)
-----------------------------------------------------------------------------------------------
5) dict.setdefault(key, default=None)
功能:获取字典中的key对应的值,如果key不存在,则添加上,并设置对应的值为None(默认,可自己指定)
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.setdefault("a", 2)
print(a,"\n",b)
c = a.setdefault("d")
print(a,"\n",c)
-----------------------------------------------------------------------------------------------
6) dict.clear()
功能: 删除字典中的所有元素
举例:
a = {'a': 1, 'b': 2, 'c': 3}
print(a)
a.clear()
print(a)
-----------------------------------------------------------------------------------------------
7) len()
略过
-----------------------------------------------------------------------------------------------
8)dict.items()
功能:讲字典中的所有元素以列表的形式返回,每一个键值对为一个元组[(),(),()]
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.items()
print(b)
平常使用的时候返回值最好使用list()处理以一下,问题不大
print(list(b))
-----------------------------------------------------------------------------------------------
9)dict.keys()
功能:以列表形式返回字典的所有键
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.keys()
print(b)
-----------------------------------------------------------------------------------------------
10) dict.values()
功能:以列表的形式返回字典的所有值
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.values()
print(b)
----------------------------------------------------------------------------------------------
11)dict.update(mydict)
功能:把mydict中的元素添加(更新)到dict中,如果两者有公共元素,则以mydict中的元素的值为最后结果
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = {"a":2,"d":4}
a.update(b)
print(a)