一、字典
1、字典的特点:
一系列键-值对(key-value),字典用放在花括号{ }中的一系列键值对表示;
字典中有多个元素时需要用逗号,隔开;
key不能重复;
字典是无序的。
字典的优点:字典取值方便,速度快,比列表取值快,不需要像列表一样一个一个找。
2、字典的方法:
已存在的字典:
info = { "name":"andy", "color":"red", "city":"beijing" }
(1)增加
方法有二:
【1】向字典info中增加一个新的key:height
info['height']=160
【2】向字典info中增加一个新的key:sex
info.setdefault('sex','male')
如上两种方法在新增不存在的键时没有区别,但要是增加已存在的键,则不同:
若使用方法【1】可修改原存在的键对应的值;
若使用方法【2】则不会修改原存在的键对应的值;
(2)删除
方法有二:
【1】pop方法
info.pop('sex')
【2】del方法
del info['sex']
随机删除一个元素方法不常用,info.popitem()
(3)修改
同新增的【1】方法
info['height']=160
(4)取值
【1】输入键取对应的值
print(info['color'])
【2】使用get取值
print(info.get('color'))
如上两种方法都可以取已存在的key,若取字典里不存在的key,则不同:
【1】会报错
【2】返回None (使用此方法可设置取不到值时,传入默认值,方法为info.get('color','red'))
>获取字典里所有的key
print(info.keys())
>获取字典里所有的value
print(info.values())
(5)清空
info.clear()
(6)update与list中的extend类似,如下为将stu字典加入到info字典中
stu ={ 'stu_id':'123456', 'stu_no':'no.1' } info.update(stu) print(info)
3、多层字典取值
stu_info = { 'liudonghai':{ 'house':['三环','四环','五环'], 'car':{ 'china':['byd','五菱宏光','Hongqi'], 'jap':['丰田','本田'], 'Germany':{ 'ben-z':2, 'bmw':3, 'audi':5 } } } } #1、刘东海又买了一辆宝马 stu_info['liudonghai']['car']['Germany']['bmw']+=1 print(stu_info['liudonghai']['car']['Germany']['bmw']) #2、刘东海不要byd和红旗了 stu_info['liudonghai']['car']['china'].remove('byd') print(stu_info['liudonghai']['car']['china']) stu_info['liudonghai']['car']['china'].pop(-1) print(stu_info)
4、循环字典:
accounts = { "liuzhao":"123456", "liudonghai":"123456", "zhaowenming":"3154325345", "xiaoming":"34523434" } for k in accounts: #直接循环字典每次循环的时候取到的是字典的key print("%s => %s"%(k,accounts[k])) #同时取到key和value--方法1 for k,v in accounts.items(): #同时取到key和value--方法2,没有上面的方法1效率高 print("%s => %s"%(k,v)) l = ['liuzhao', 'liudonghai', 'zhaowenming', 'xiaoming', 'users'] s = '34125345235355ssssss' for i in l: #循环list,循环list里的每一个元素 print(i) for j in s: #循环字符串,循环字符串里的每一个元素 print(j) print(list(range(5))) print(list(range(1,5)))