python字典
字典是另一种可变容器模型,且可存储任意类型对象。
1 创建字典
字典的每个键值对(key=>value)用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
1、创建普通的字典。例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18}
print(dict)
print(type(dict))
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
print(dict1)
print(dict2)
{'id': 2021001, 'name': 'zhangsan', 'age': 18}
<class 'dict'>
{'abc': 456}
{'abc': 123, 98.6: 37}
2、创建同value不同key的字典。例如:
dict3 = {"key1":1, "key2":1}
print(dict3)
{'key1': 1, 'key2': 1}
3、如果创建相同key的字典,会如何?
如果创建相同key的字典,不会报错,也能创建成功。但是,因为创建的字典里只会有不同的key,所以两个相同的key之间只会有一个在字典里,对应的value也只会有一个,并且记住的会是第二个key和它的value。
例如:
dict4 = {"key":0, "key":1, "key2":3}
print(dict4)
{'key': 1, 'key2': 3}
2 访问字典里的值
把相应的键放入到方括号中,就能访问到字典里的值了。
可以把字典的key当作它的索引,用key来访问对应的value值。
例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18}
print(dict["name"])
zhangsan
如果用字典里没有的键访问数据,会输出KeyError错误
print(dict["score"])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-12-f778e01594f1> in <module>
----> 1 print(dict["score"])
KeyError: 'score'
3 修改字典
可以在字典里增加新的键值对,也可以修改或删除已有键值对。
1、增加新键值对。例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18}
print(dict)
dict["sex"] = "man"
print(dict)
{'id': 2021001, 'name': 'zhangsan', 'age': 18}
{'id': 2021001, 'name': 'zhangsan', 'age': 18, 'sex': 'man'}
2、修改键值对。例如:
dict["name"] = "lisi" # 和增加键值对是一样的操作
print(dict)
{'id': 2021001, 'name': 'lisi'}
3、删除键值对。
可以使用del命令删除键值对,也可以使用pop方法、popitem方法删除键值对。
pop方法:使用pop方法删除键值对需要指定键(key),pop方法会删除字典给定键 key 所对应的值,返回值为被删除的值。
popitem方法:使用popitem方法删除键值对是删除的最后一个键值对,并且会返回最后一个键值对。
注意:不能使用del一次删除多个键值对。
1、使用del命令删除键值对。例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18}
del dict["age"]
print(dict)
{'id': 2021001, 'name': 'zhangsan'}
2、使用del命令一次删除多个键值对,就会报错。例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18, "score":0, "other":"null"}
del dict["age", "score"]
print(dict)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-95-918970a1968d> in <module>
1 dict = {"id": 2021001, "name": "zhangsan", "age": 18, "score":0, "other":"null"}
----> 2 del dict["age", "score"]
3 print(dict)
KeyError: ('age', 'score')
3、使用pop方法删除键值对。例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18}
print(dict.pop("id"))
print(dict)
2021001
{'name': 'zhangsan', 'age': 18}
4、使用popitem方法删除键值对。例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18, "score":0, "other":"null"}
print(dict.popitem())
print(dict)
('other', 'null')
{'id': 2021001, 'name': 'zhangsan', 'age': 18, 'score': 0}
4、删除字典
也可以使用del命令删除字典。
注意:使用del删除字典后这个字典就不存在了,这时再去查看字典就会出错。
dict1 = {"id": 2021001, "name": "zhangsan", "age": 18}
print(dict1)
del dict1
print(dict1)
{'id': 2021001, 'name': 'zhangsan', 'age': 18}
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-77-d47a0b190a12> in <module>
2 print(dict1)
3 del dict1
----> 4 print(dict1)
NameError: name 'dict1' is not defined
5、清空字典。
可以使用clear()清空字典。
注意:清空字典后字典依然存在,只是字典里的内容为空,依然可以查看字典。
例如:
dict = {"id": 2021001, "name": "zhangsan", "age": 18}
print(dict)
dict.clear()
print(dict)
{'id': 2021001, 'name': 'zhangsan', 'age': 18}
{}
4 字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
5 字典内置函数和方法
1、Python字典包含了以下内置函数:
1、len(dict):计算字典元素个数,即键的总数。
2、str(dict):输出字典,以可打印的字符串表示。
3、type(variable):返回输入的变量类型,如果变量是字典就返回字典类型(dict)。
例如:
# 字典的函数
dict = {"a": 1, "b":2, "c":3, 4: 4}
print(dict)
print(len(dict))
print(str(dict))
print(type(dict))
{'a': 1, 'b': 2, 'c': 3, 4: 4}
4
{'a': 1, 'b': 2, 'c': 3, 4: 4}
<class 'dict'>
2、Python字典包含了以下内置方法:
1、radiansdict.clear():删除字典内所有元素
2、radiansdict.copy():返回一个字典的浅复制
3、radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4、radiansdict.get(key, default=None):返回指定键的值,如果键不在字典中返回 default 设置的默认值
5、key in dict:如果键在字典dict里返回true,否则返回false
6、radiansdict.items():以列表返回一个视图对象
7、radiansdict.keys():返回一个视图对象
8、radiansdict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9、radiansdict.update(dict2):把字典dict2的键/值对更新到dict里
10、radiansdict.values():返回一个视图对象
11、pop(key[,default]):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12、popitem():随机返回并删除字典中的最后一对键和值。
例如:
# 字典的内置方法
dict = {"a": 1, "b":2, "c":3, 4: 5}
print(dict.keys()) # 查看字典里的所有key
print(dict.values()) # 查看字典里的所有values
print()
print(dict.pop(4)) # 删除指定key的键值对
print(dict)
print(dict.popitem()) # 删除最后一个键值对
print(dict)
print()
dict2 = {
"color1": "red",
"color2": "blue",
"clore3": "black"
}
dict2.update({"color3": "green"}) # 更新键值对
print(dict2)
dict_keys(['a', 'b', 'c', 4])
dict_values([1, 2, 3, 5])
5
{'a': 1, 'b': 2, 'c': 3}
('c', 3)
{'a': 1, 'b': 2}
{'color1': 'red', 'color2': 'blue', 'clore3': 'black', 'color3': 'green'}