基本数据类型之字典

字典dict:

定义:通过{ }来存储数据,通过key:value来定义键值对数据,每个键值对中间用逗号分隔开,其中value可以是任意类型,而key一定要是不可变类型(数字,字符串)。

 

字典的三种定义方式:

1、d1 = {'name':'bob','age':18}
2、d2 = dict({'name':'bob'})
3、#了解  zip:  
l1 = ['name','bob']
l2 = ['age','18']
z1 = zip(l1,l2)
print(dict(z1))
常用方法:

#1.1、按照key:value映射关系取值(可存可取)
user_info = {'name':'egon','age':18,'hobbies':['football','eat','sleep']}
print(user_info['age'])
>>>18
print(user_info['hobbies'][0])
>>>football

#1.2 对于赋值操作,如果key原先不存在于字典,则会新增key:value
user_info = {'name':'egon','age':18}
user_info['gender'] = 'male'
print(user_info)
>>>{'name': 'egon', 'age': 18, 'gender': 'male'}

# 1.3 对于赋值操作,如果key原先存在于字典,则会修改对应value的值
user_info = {'name':'egon','age':18}
user_info['name'] = 'tony'
print(user_info)
>>>{'name': 'tony', 'age': 18, 'gender': 'male'}

#2、成员运算:in , not in #默认判断某个值是否为字典的key
user_info = {'name':'egon','age':18}
print("name" in user_info)
>>>True

#3、len():#获取当前字典中键值对的个数
user_info = {'name':'egon','age':18}
print(len(user_info))
>>>2

#4、for循环
#4.1 默认遍历的是字典的key
for key in user_info:
print(key)
>>>name
>>>age

#4.2 只遍历key
for i in user_info.keys():
    print(i)
>>>name
>>>age

#4.3 只遍历value
user_info ={'name':'egon','age':18}
for i in user_info.values():
    print(i)
>>>egon
>>>18

#4.4 遍历key和value
for i in user_info.items():
    print(i)
    
内置方法:
#1、keys,values,items
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
print(dic.keys())  #返回所有的key
print(dic.values()) #返回所有的value
print(dic.items()) #返回所有的键值对,返回值是列表套元组的形式,每一个键值对都是存在元组
>>>dict_keys(['k1', 'k2', 'k3'])
>>>dict_values(['jason', 'Tony', 'JY'])
>>>dict_items([('k1', 'jason'), ('k2', 'Tony'), ('k3', 'JY')])


#2、get():获取指定key的值,如果值不存在,默认返回None,可以通过第二个参数修改默认返回的值
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
dic.get('k1')
>>> 'jason'  
res=dic.get('xxx') # key不存在,不会报错而是默认返回None
print(res)
>>> None  
res=dic.get('xxx',666) # key不存在时,可以设置默认返回的值
print(res)
>>> 666 
# ps:字典取值建议使用get方法

#3、pop():删除指定key对应的键值对,有返回值,返回为对应的value
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
v = dic.pop('k2')  # 删除指定的key对应的键值对,并返回值
print(dic)
>>> {'k1': 'jason', 'k3': 'JY'}
print(v)
>>> 'Tony'

#4、popitem(): 随机删除一组键值对,并将删除的键值放到元组内返回
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
item = dic.popitem() 
print(dic)
>>> {'k3': 'JY', 'k2': 'Tony'}
print(item)
>>> ('k1', 'jason')
>
#5、update():用新字典更新旧字典,有则修改,无则添加
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
dic.update({'k1':'JN','k4':'xxx'})
print(dic)
>>>{'k1': 'JN', 'k3': 'JY', 'k2': 'Tony', 'k4': 'xxx'}

#6、formkeys():生成一个新字典,第一个参数(列表),它会以第一个参数中的各个元素为key,以第二个参数为值,组成一个新字典
dic = dict.fromkeys(['k1','k2','k3'],'egon')
print(dic)
>>>{'k1':'egon', 'k2':'egon', 'k3':'egon'}

#7、setdefault():若key不存在,新增键值对,有返回值,返回新增value。
dic={'k1':111,'k2':222}
res=dic.setdefault('k3',333)
print(res)
>>>333
print(dic) 
>>>{'k1': 111, 'k2': 222, 'k3': 333}
#若key存在则不做任何修改,并返回已存在key对应的value值
dic={'k1':111,'k2':222}
res=dic.setdefault('k1',666)
res
>>> 111
dic # 字典不变
>>> {'k1': 111, 'k2': 222}

猜你喜欢

转载自www.cnblogs.com/baohanblog/p/11807403.html