字典
解释:
- 字典和列表一样都是一列值得集合;
- 字典的索引并不像列表那样必须是整数,字典的索引可以是很多类型;
- 字典的索引被称为“键”,键及键关联的值合在一起称为“键值”对。
语法:
{"key1":value,"key2":value,....}或者{'key1':value,'key2':value,....}
示例:
>>> mydic={'name':'bobo','age':12,'bobby':'apple'} >>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple'} >>> mydic['age'] 12 >>> complexdic={'id':1,'content':mydic,'range':10} >>> complexdic {'id': 1, 'content': {'name': 'bobo', 'age': 12, 'bobby': 'apple'}, 'range': 10} >>> complexdic['content'] {'name': 'bobo', 'age': 12, 'bobby': 'apple'} >>> complexdic['content']['name'] 'bobo'
说明:字典和列表按照索引取值,dict['键名'];字典中键对应的值的类型还可以是字典。
字典与列表:
字典中的键值对是不按照顺序存储的,所以只要键值对个数一样,内容一样,那么这两个字典是相等的
示例:
>>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple'} >>> mydd={'name':'bobo',"bobby":'apple',"age":12} >>> mydd {'name': 'bobo', 'bobby': 'apple', 'age': 12} >>> mydd==mydic True >>> mylis=[1,2,3] >>> mylis [1, 2, 3] >>> myll=[1,3,2] >>> myll [1, 3, 2] >>> mylis==myll False
说明:字典不是顺序存储的,列表是顺序存储的。字典像列表那样切片。
字典遍历方法:
keys()、values()、items():分别是获取所有得键、获取所有得值、获取所有的键值(这个值是个元组)
示例:
>>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple'} >>> mydic.keys() dict_keys(['name', 'age', 'bobby']) >>> for x in mydic.keys(): ... print(x) ... name age bobby >>> for x in mydic.values(): ... print(x) ... bobo 12 apple >>> for x,y in mydic.items(): ... print(x,y) ... name bobo age 12 bobby apple
检查字典中的键、值存在情况
说明:在访问一个键的值之前,确定键在字典中是否存在是十分重要的。
get()方法:
两个参数,第一个是键名;第二个是指定值;当键对应的值不存在或者键都不存在的时候,我们可以返回指定的值。
示例:
>>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple'} >>> key_value=mydic.get('adress',-1) >>> key_value -1 >>> key_value1=mydic.get('name','不存在') >>> key_value1 'bobo'
说明:当键对应的值存在的时候,get会返回字典中的键对应的值;如果不存在就会返回我们指定的值
setdefault()方法:
当遇到给一个键设置一个默认值是,setdefault()方法就十分方便了。它内置检查机制,帮我们很好地解决判断键是否存在的问题。
示例1:我们没有setdefault()时的做法:
>>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple'} >>> if 'color' in mydic: ... pass ... else: ... mydic['color']='yellow' ... >>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple', 'color': 'yellow'}
示例2:当使用了setdefault()方法:
>>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple', 'color': 'yellow'} >>> mydic.setdefault('adress','china') 'china' >>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple', 'color': 'yellow', 'adress': 'china'} >>> mydic.setdefault('adress','usa') 'china' >>> mydic {'name': 'bobo', 'age': 12, 'bobby': 'apple', 'color': 'yellow', 'adress': 'china'}
说明:setdefault()方法在检查到没有键对应的值时,会将键添加到字典中,并设置我们指定的默认值。当发现键有对应的值后,就不会再对键对应的值进行重新赋值。
示例3:给你一串字符串,要求你能够计算出每一个字符在字符串中出现了几次?
思路:字符--次数,这明显想让我们使用字典昂。字符作为键--次数作为值。
示例:
mystr='alsjdnwlsdisla' count_dic={} for item in mystr: count_dic.setdefault(item,0) # 先给键添加到字典中,防止给键设置值时报错 count_dic[item]=count_dic[item]+1 # 通过索引给索引对应的值赋值 每次遍历次数加一 print(count_dic)
输出结果:
{'a': 2, 'l': 3, 's': 3, 'j': 1, 'd': 2, 'n': 1, 'w': 1, 'i': 1}