Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。dict的实现原理和日常生活查字典是一样的!
日常生活中查字典的方法有两种:
1.是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
2.先在字典的索引表里查这个字对应的页码,然后直接翻到该页,找到这个字,这个字就相当于索引。这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
用Python写一个dict如下:
Student = {'name': 'jack', 'score': 100}
字典键-值(key-value)之增删改查:
1.查找:根据key查找对应的value值,类似列表根据索引查找值,只不过字典是根据key查找
>>>Student['name']
'jack'
ps:如果字典中没有查找的key,dict就会报错(根本没这个key,那肯定会报错呀)
一般我们会用in来判断某个key是否存在字典中:
>>>'name' in Student
True
2.增加键-值(key-value): 字典名['key']= value
ps:其中key和value为自己新增的key和value,一个key只能对应一个value,如果key与之前的value相同,则新的value会代替之前的value
#添加新的key和value
>>>Student['age']=20
>>>Student
{'name': 'jack', 'score': 100, 'age': 20}
3.删除键-值(key-value):del 字典名['key']
>>>del Student['age']
>>>Student
{'name': 'jack', 'score': 100}
4.修改键-值(key-value):直接把key的值修改成想要的值
>>>Student['name']='anna'
>>>Student
{'name': 'anna', 'score': 100}
拓展知识:根据value找key
一般来说我们是根据key寻找value的,比较简单。上面我们讲到过一个key只能对应一个value,在字典中key只能是唯一的!但是value不保证唯一性。这类似列表中的索引唯一,值不唯一。
回到正题,根据value查找key分两种情况:
举个栗子:这里我写了一个简单的成绩单
查找代码需求是:1.查找是哪些人考了59分(value值不唯一),打印出他们的名字
Student_grade = {
"jack":100,
"rose":80,
"kaer":59,
"tom":59
}
方法:
#通过input查找需要的值
get_value = input("grade:")
#如果输入的值在字典中,就循环遍历
if get_value in Student_grade.values():
#(遍历长度a为0-字典长度)
for a in range(0,len(Student_grade)):
#把字典的值放在列表中,如果列表的值中有查找的值,就打印输出列表的key
if Student_grade.values()[a] == get_value:
print (Student_grade.keys()[a])
#如果值不在列表中,就输出'false'
else:
print ('false')
结果:
grade:59
tom
kaer
grade:60
false
ps:方法keys()用来遍历字典中的所有键;
方法values()遍历字典中的所有值。(这种做法提取字典中所有的值,而没有考虑是否重复。)