python字典基础知识了解(增删改查+根据value查找key)

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分两种情况:

  • value值唯一的情况直接构造列表list,通过value的索引取对应的key。
  • value值不唯一的情况,需要通过for遍历出所有的索引然后查出所有对应的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()遍历字典中的所有值。(这种做法提取字典中所有的值,而没有考虑是否重复。)

你可能感兴趣的:(python基础,python,字典,dict)