python基础数据类型(三)字典

1.字典dict介绍

  字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的(python3.5及3.5以下版本无序),且key必须是可哈希的。

  不可变的数据类型:tupe、bool、int、str    #可哈希

  可变的数据类型:list、dict、set        #不可哈希

  dict key 必须是不可变与可哈希的数据类型;

  dict value 可以是任意数据类型

 

  dict 优点:利用二分查询法查找数据,存储大量的关系数据。

  dict 缺点:无序的(python3.5及3.5以下版本无序)

2.dict增

#
dic1 = {'age':18,'name':'jason','sex':'male'}
#one
dic1['high'] = 185  #没有键值对增加
print(dic1)

dic1['age'] = 16    #如果键已存在,则将值覆盖
print(dic1)

#two
dic1.setdefault('weight')   #默认没有写值,那对应的值是 None
print(dic1)
dic2 = dic1
dic3 = dic1
dic2.setdefault('weight',190) #如果键已经存在,不做任何改变,如果没有才添加
print(dic2)
dic3.setdefault('hobby','girl')
print(dic3)

3.dict删

#删除
dic1 = {'age':18,'name':'jason','sex':'male'}
#one
print(dic1.pop('age'))  #根据键名删除键值对,返回此键对应的值
print(dic1)

print(dic1.pop('abc',None)) #如果要删除的键名不存在字典中,可以自定义返回值。
print(dic1.pop('abcd','在字典中找不到此键'))
print(dic1)

#two
print(dic1.popitem())  #python3.5及3.5以前版本是随机删除一个键值对,返回被删除的键值对。
print(dic1)

#three
del dic1['name']  #指定键名删除键值对,如要删除的键不在字典中,则会报错。
print(dic1)

del dic1 #不指定键名表示删除整个字典
print(dic1) #继续打印字典会报错

#four
dic1.clear()    #清空字典
print(dic1)

dic1 = {'age':18,'name':'jason','sex':'male'}

4.dict改

dic1 = {'age':18,'name':'jason','sex':'male'}
#
#one
dic1['age'] = 16    #通过指定键名直接修改键值对中的值
print(dic1)

#two
dic1 = {'age':18,'name':'jason','sex':'male'}
dic2 = {'name':'alex','weight':75}
dic2.update(dic1)   #将dic1与dic2中相同的键值对更新到dic2字典中,将dic1中有dic2中没有的键值对更新到dic1字典中
print(dic1)
print(dic2)

5.dict查

#
#one
dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic1.keys())  #返回字典中所有的键名
print(dic1.values())    #返回字典中所有的值
print(dic1.items())     #返回字典中所有的键值对

#two
dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'}
for i in dic1:  #for循环中,默认不指定字典的返回条件时,与dict.keys效果一样
    print(i)
for i in dic1.keys():
    print(i)
for i in dic1.values(): #在for循环中拆分出所有键值对的值出来
    print(i)

for k,v in dic1.items():  #将字典中的键与值分别循环复制到变量K与v中
    print(k,v)
    
#three
dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic1.get('name','没有这个键')) #通过键名查看键值对中的值,如果字典中存在此键,则返回的是值,如果没有此键名,返回设置好的值

 6.汇总总结

#增2种方法
    dict['key'] = '不可变的数据类型' #没有此键值对时向字典中增加,有此键值对覆盖之前的值。
    dict.setdefault('key','value')  #如果没有此键值对,才会向字典中增加,反之不做改变。

#删5种方法
    dict.pop('key',None) #按key删除键值对,可自定义返回值
    dict.popitem()  #无序随机删除一个键值对
    del dict #删除整个字典
    del dict['key'] #指定key删除键值对,如没有则报错
    dict.clear()    #清空字典

#改2种方法
    dict['key'] = '不可变的数据类型' #通过指定key直接修改键值对中的值
    dict2.update(dict1) #将dict1中的数据更新到dict2中
    
#
    print(dict.keys())  #返回字典中所有的键名
    print(dict.values())    #返回字典中所有的值
    print(dict.items())     #返回字典中所有的键值对
    for i in dict       #for循环查看字典内容
    dict.get('key',None)    #通过Key查找键值对,返回自定义的值

 

posted @ 2017-12-20 16:58  一拳法师  阅读(321)  评论(0编辑  收藏  举报