零基础 学 python开发 (Genius套餐A) 二十四

夜光序言:

 

 

 

通常,当人们说出温和话语的时候,行为必然也会自然地反映出温和的态度,于是平和之心的力量也将从中孕育而生。

 

 

 

 

 

零基础 学 python开发 (Genius套餐A) 二十四

正文:

4.5 字典类型 
4.5.1 目标 


夜光:在程序中经常碰到键值对的问题,即给定一个键值 key,那么它对应的值 value 是什么?
例如一个学生的姓名(key)是什么(value),性别(key)是什么(value)~~

 

目标是掌握这种字典的应用,实现用列表与字典存储一组学生的信息,方便查找。

 

 


 



4.5.2 字典类型 


字典是另一种可变容器模型,且可存储任意类型对象,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
print(type(dict))
结果:
<class 'dict'>
由此可见字典类型是一个类名称为 dict 的对象类型。

 



1、 访问字典里的值 


把相应的键放入熟悉的方括弧,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
以上实例输出结果:
dict['Name']: Zara
dict['Age']: 7
如果用字典里没有的键访问数据,会输出错误如下:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Alice']: ", dict['Alice'])
以上实例输出结果:
dict['Zara']:
Traceback (most recent call last):
 File "test.py", line 4, in <module>
 print "dict['Alice']: ", dict['Alice']
KeyError: 'Alice'

 



2、修改字典 


向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
如果一个键值已经存在,那么可以修改它的值
dict['Age'] = 8
如果一个键值不存在,那么可以增加
dict['School'] = "DPS School"
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
以上实例输出结果:
dict['Age']: 8
dict['School']: DPS School

 



3、删除字典元素 


删除一个字典用 del 命令,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键是'Name'的条目
dict.clear() # 清空词典所有条目
del dict # 删除词典

 



4、字典键的特性 


字典值可以没有限制地取任何 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行,两个重要的点需要记住:

(1) 不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print ("dict['Name']: ", dict['Name'])
以上实例输出结果:
dict['Name']: Manni

 

(2) 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:
dict = {['Name']: 'Zara', 'Age': 7}
print ("dict['Name']: ", dict['Name'])
以上实例输出结果:
Traceback (most recent call last):
 File "test.py", line 3, in <module>
 dict = {['Name']: 'Zara', 'Age': 7}
TypeError: list objects are unhashable

 

 



5、函数得到字典的长度 len(dict) 


以下实例展示了 len()函数的使用方法:
dict = {'Name': 'Zara', 'Age': 7}
print ("Length : " ,len (dict))
以上实例输出结果为:
Length : 2

 

 



6、删除字典 dict 的所有元素 dict.clear() 


以下实例展示了 clear()函数的使用方法:
dict = {'Name': 'Zara', 'Age': 7}
print ("Start Len : ",len(dict))
dict.clear()
print "End Len : ", len(dict))
以上实例输出结果为:
Start Len : 2
End Len : 0

 

 



7、 获取字典的所有键值函数 dict.keys() 


Python 字典 keys() 函数以列表返回一个字典所有的键,以下实例展示了 keys()函数
的使用方法:
dict = {'Name': 'Zara', 'Age': 7}
print ("keys : " , dict.keys())
以上实例输出结果为:
keys : ['Age', 'Name']

 

 



8、 dict.getKey(key,default=None) 


Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值 None 或者指定
的值,以下实例展示了 get()函数的使用方法:
dict = {'Name': 'Zara', 'Age': 27}
print ("Value : %s" % dict.get('Age'))
print ("Value : %s" % dict.get('Sex', "Never"))
以上实例输出结果为:
Value : 27
Value : Never

 

 



4.5.3 【案例】字典存储学生信息 


1、案例描述 
使用列表与字典存储学生信息,方便查找,学生信息包括的姓名、性别、年龄。
2、案例分析 
一个学生的信息是字典对象,例如:
{"Name":"张三","Gender":"男","Age":20}
设计一个列表 st=[],它存储多个学生,每个列表元素是一个学生字典对象,例如:
st=[{"Name":" 张 三 ","Gender":" 男 ","Age":20},{"Name":" 张 四 ","Gender":" 女
","Age":20}]
3、案例代码 
 

# Genius
st=[]
def getStudents():
 global st
 st=[]
 st.append({"Name":"夜光","Gender":"男","Age":1111})
 st.append({"Name": "A", "Gender": "女", "Age": 21})
 st.append({"Name": "B", "Gender": "男", "Age": 22})
def seekStudent(Name):
 for s in st:
 if s["Name"]==Name:
 print(s["Name"], s["Gender"], s["Age"])
 return
 print("没有姓名是",Name,"的学生")
getStudents()
seekStudent("夜光")
seekStudent("C")
结果:
夜光 男 1111
没有姓名是 夜光 的学生





 

上一篇:CH109 Genius ACM 题解报告


下一篇:零基础 学 python开发 (Genius套餐A) 二十七