可变数据类型与不可变数据类型
python中的数据类型可以划分为可变数据类型和不可变数据类型,可变数据类型就是可以哈希的数据类型,不可变数据类型就是不可哈希的数据类型。(不太懂什么是哈希,似乎是一种技术处理数据使得数据便于处理)
不可变的数据类型:int float complex bool str tuple
可变的数据类型:list dict set
dict字典的key与value的基本规定
字典dict是用来储存关心对的数据类型,每个key对应一个value。其中key只能是不可变类型,而value则可以使任意类型。
字典dict是无序的
dic = {'name':'鲁达','age':22,'weight':160}
字典的增操作
dic['age'] = 35 #如果有所输入的键值则更改该键值对应的数据
dic['hight'] = 185 #如果没有键值则添加键值
setdefault(k,d=None)如果字典中存在存在键值k则不作任何改变,如果不存在该键值,则增加键值以及键值所对应的数据d.默认该数据为None。
字典的删操作
pop(k,d)字典的pop与列表的pop相似,是依据键值删除字典中的数据。当字典中存在键值k时删除该键值对并返回该键值对应的值,当列表中没有该键值时返回d。默认为None
print(dic.pop('age',None)) #字典的pop()与列表的pop相似,也有返回值,返回的事所删除键值对的值
print(dic.pop('age',None)) #可以设置没有所查询键值时的返回值,默认为None
popitem()随机删除字典中的一组键值对,并且返回该键值对
print(dic.popitem()) #随机删除字典中的一组键值对
clear()删除字典中的所有元素
dic.clear() #清空字典中的所有元素
del方法可以直接删除整个字典,或者按照键值删除键值对。但是如果按照键值删除键值对时,所输入的键值是不存在的则会报错。(由于会报错,不好用)
del dic['age'] #当输入的键值不存在时就会报错
字典的改操作
可以直接通过键值更改字典中的数据,类似于利用索引更改列表中的数据。
dic['hight'] = 185 # 当字典中不存在该键值时会添加该键值
dict1.update(dict2)是字典数据常用的改操作,使得字典dict1更新到dict2。dict2中的元素如果dict1中有则用dict2中该键值对替换,如果没有则增加。
dic1.update(dic2) #利用dic2更新dic1中的数据
字典的查操作
keys()返回字典所有的键值并组成一个类似于列表的数据。(不是列表类型但是类似于列表类型)
values()返回字典所有的值并组成一个类似于列表的数据。(不是列表类型但是类似于列表类型)
item()返回字典所有的键值对组成的元组并组成一个类似于列表的数据。(不是列表类型但是类似于列表类型)
print(dic.keys()) #结果为dict_keys(['age', 'weight', 'name'])
print(dic.values()) #结果为dict_values([22, 160, '鲁达'])
print(dic.items()) #结果为dict_items([('age', 22), ('weight', 160), ('name', '鲁达')])
#遍历字典中的键值
for i indic:print(i)for i indic.keys():print(i)#遍历字典中的值
for i indic.values():print(i)#遍历字典中键值对
for i indic.items():print(i)
for i,j in dic.items():
print(i,j)
get(key,d)依据key寻找value,当能查找到时返回该value,当不能查找到时返回所设置的d
dic ={'name':'鲁达','age':22,'weight':160}print(dic.get('hight','没有该值'))
fromkeys创建字典
使用fromkeys('iterable value',value)创建一个以可迭代变量中的元素作为键值,用value作为各个键值对应的值。
dic = dict.fromkeys(['k1','k2','k3'],['a','b','c'])
print(dic) # 输出结果为{'k1': ['a', 'b', 'c'], 'k3': ['a', 'b', 'c'], 'k2': ['a', 'b', 'c']}
for循环的一些特点
for i in value
当value为一个不可变得数据类型时,在第一次进入循环后以后循环都一直使用value的原有值不会改变。
当value为一个可变数据类型时