Python学习笔记(五)

字典dict

数据类型划分:可变数据类型,不可变数据类型。不可变数据类型:tuple bool int str (可哈希)。 可变数据类型:list dict set (不可哈希)。

dict key 必须是不可变数据类型,可哈希;value:任意数据类型。dict 优点:二分查找去查询,可以存储大量的关系型数据。特点:无序的。

1、增

#第一种
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic['age'] = 19          #如果有键对应,则值覆盖
dic['hobby'] = 'girls'     #没有键值对,在末尾添加
print(dic)     #{'age': 19, 'name': 'jason', 'sex': 'male', 'hobby': 'girls'}

#第二种
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic.setdefault('hobby')       # 有键值对,不做任何改变,没有才添加。不赋值默认None
dic.setdefault('age',19)      
dic.setdefault('weight',60)
print(dic)    #{'age': 18, 'name': 'jason', 'sex': 'male', 'hobby': None, 'weight': 60}

2、删

# pop 有返回值,返回删除键对应的value,如果不存在则报错,可以添加第二个参数作为返回值
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic.pop('age'),dic.pop('hobby',None),dic)
#18 None {'name': 'jason', 'sex': 'male'}

# popitem 随机返回并删除字典中的最后一对键和值
print(dic.popitem())

# 清空字典(字典还存在)
dic.clear()

# del 通过键删除键值对
del dic['name']      #打印返回{'age': 18, 'sex': 'male'}
del dic     #删除整个字典(字典不存在)

3、改

# 通过键值对直接改
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic['age'] = 19

# upd*te
   (*改成a)
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
dic2 = {'hobby':'girls','abc':123}
dic.upd*te(dic2)       #dic2不变,dic2的内容追加到dic中
dic.upd*te([(1,'a'),(2,'b')])  #列表中的元组作为两个键值对依次加入到原字典的最后
dic.upd*te(weight=60,height=160)    #同上,在结尾依次插入

4、查

# 通过键查询值,直接dic[key](没有此键会报错)
dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic['name'])   #jason

dic = {'age': 18, 'name': 'jason', 'sex': 'male'}
print(dic.keys())        #dict_keys(['age', 'name', 'sex'])  # 注意<class 'dict_keys'>
print(dic.values())      #dict_values([18, 'jason', 'male'])
print(dic.items())       #dict_items([('age', 18), ('name', 'jason'), ('sex', 'male')])

for i in dic:
     print(i)
for i in dic.keys():   #两者输出的都是键,想要输出value用for i in dic.values():
     print(i)

for i in dic.items():
     print(i)        #('age', 18)
('name', 'jason')
('sex', 'male') 每两个间换行
for i,j in dic.items():
     print(i,j)        #age 18 (换行) name jason (换行) sex male

# get
v = dic.get('name')
print(v) # jason
v = dic.get('name1')
print(v) # None
v = dic.get('name2','没有此键')
print(v) # 没有此键 

发表评论

您的电子邮箱地址不会被公开。