python
字典
思考:
场景1
如果有列表
li=['Python','Java','C++']
需要对“Python”这个名字写错了,通过代码修改:
li[0]="Python"
如果列表的顺序发生了变化,如下
li={'Java','C++','Python'}
此时就需要修改下标,才能完成名字的修改
li[2]="Python"
有没有方法,既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素呢?
答:
字典
场景二:
学生信息列表,每个学生信息包括学号,姓名、年龄登,如何从中找到某个学生的信息?
>>>students=[201801,"张三",18],[201802,"李四",19],[201803,"王二",17], ...]
循环遍历?这样很麻烦。
实际生活中,我们还经常用汉语字典,英汉字典等等。
程序中的字典:
info={"username":"lilei","age":18,"Class":"one"}
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。字典是一种可变数据类型,且可存储任意类型对象。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
格式:
{key1:value1,key2:value2,…}
描述:
1.键-值对中间用冒号(":")连接;
2.key:value组成字典里的一个元素
3.键-值对(元素)之间用逗号(",")隔开;
4.整个字典用花括号“{}”包裹起来.
字典的创建
创建一个空字典
dict={
}
print(type(dict))
创建一个有多个值的字典
1.直接赋值法:d={key1:value1,key2:value2}如:
>>> info={
"usrname":"Lilei", "age": 18, "Class": "one"}
>>> info
{
"usrname":"Lilei", "age": 18, "Class": "one"}
2.通过函数创建字典(强制转换):
#法1
>>> info={
"usrname":"Lilei", "age": 18, "Class": "one"}
>>> info
{
"usrname":"Lilei", "age": 18, "Class": "one"}
#法2
>>> info = dict(usrname = "Lilei", age = 18, Class = "one")
>>> info
(usrname = "Lilei", age = 18, Class = "one")
#法3
>>> info = dict([['name', 'LiLei'], ['age', 18]])
>>> info
('name', 'LiLei'), ('age', 18)
#法4
>>> info = dict((('name', 'LiLei'), ('age', 18)))
>>> info
('name', 'LiLei'), ('age', 18)
#法5
>>> info = dict([('name', 'LiLei'), ('age', 18)])
>>> info
('name', 'LiLei'), ('age', 18)
#法6
>>> info = dict((['name', 'LiLei'], ['age', 18]))
>>> info
('name', 'LiLei'), ('age', 18)
3.通过字典的fromkeys方法创建字典
>>>info=dict.fromkeys("Hello")#如果没有指定默认值,默认为None;
>>>info
{
'H':None,'e':None,'l',None,'o':None}
>>>info=dict.fromkeys(["Lilei","lee","Jack","123456"])#给每个元素设置默认值为"123456"
>>>info
{
'Lilei':'123456','Lee':'123456','Jack':'123456'}
>>>
字典的常见操作
字典值的访问(查的一种)
字典是无序的,不能通过索引值俩获取值。
>>> info=info[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 2
>>>
- 通过键(key)访问值(value)
- key值不存在的湿乎乎,会报错。
>>> info={
"Username":"Lilei","age":18,"Class":"one"}
>>> info["Username"] #通过关键字访问对于的值
'Lilei'
>>> info["age"]
18
>>> info["username"] #没有对应的key,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'username'
>>>
-
使用get访问值(value)
不确定字典中是否存在某个键而又想获取其只时,可以使用get方法,还可以设置默认值。
-
当key不存在的,不会抛出异常,返回None
>>> info={
"Username":"Lilei","age":18}
>>> info.get("Username")
'Lilei'
>>> info.get("job") #当key不存在,不会抛出异常,返回None
>>> type(info.get("job"))
<clas