- 可变数据类型与不可变数据类型
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 in dic: print(i)for i in dic.keys(): print(i)#遍历字典中的值for i in dic.values(): print(i)#遍历字典中键值对for i in dic.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为一个可变数据类型时