目标是掌握这种字典的应用,实现用列表与字典存储一组学生的信息,方便查找。
字典是另一种可变容器模型,且可存储任意类型对象,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。一个简单的字典实例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
print(type(dict))
结果:
由此可见字典类型是一个类名称为 dict 的对象类型。
把相应的键放入熟悉的方括弧,如下实例:
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
print "dict['Alice']: ", dict['Alice']
KeyError: 'Alice'
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
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
删除一个字典用 del 命令,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键是'Name'的条目
dict.clear() # 清空词典所有条目
del dict # 删除词典
字典值可以没有限制地取任何 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
dict = {['Name']: 'Zara', 'Age': 7}
TypeError: list objects are unhashable
以下实例展示了 len()函数的使用方法:
dict = {'Name': 'Zara', 'Age': 7}
print ("Length : " ,len (dict))
以上实例输出结果为:
Length : 2
以下实例展示了 clear()函数的使用方法:
dict = {'Name': 'Zara', 'Age': 7}
print ("Start Len : ",len(dict))
dict.clear()
print "End Len : ", len(dict))
以上实例输出结果为:
Start Len : 2
End Len : 0
Python 字典 keys() 函数以列表返回一个字典所有的键,以下实例展示了 keys()函数
的使用方法:
dict = {'Name': 'Zara', 'Age': 7}
print ("keys : " , dict.keys())
以上实例输出结果为:
keys : ['Age', 'Name']
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
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
没有姓名是 夜光 的学生