简介
字典输出是无序的(python3.5以下是无序,3.6以上是有序的)没有索引,只有key值
key值只能是可哈希的数据类型,也就是不可修改的数据类型:int,str,元组,
value值则可以是任意类型的值,不可哈希或可哈希均可
注意:不要循环字典删除字典元素,会报错
info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
print(info)#打印出来是无序的
print(info["001"])#输入key值就可以找到对应的值
新增
如果key值存在就是修改,没有就是新增一条
info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
info["001"]="张三"#修改值,
info["sex"]="man"#新增内容
print(info)
》》》{"001":"张三",'002':'lisi',"003":"wangwu","sex":"man"}
info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
info.setdefault("weight",130)#字段如果没有这个key,则增加,默认值是None
info.setdefault("002","老刘")#字典如果已经有key,则不变
print(info)
》》》{"001":"zhangsan",'002':'lisi',"003":"wangwu","weight":130}
删除
del 内置方法,可以删除字典,列表,元组等等,想删谁就删谁
del info["001"]#删除某个值
del info#删除整个字典,字典都不存在了
info.clear()#字典清空,但是字典还是存在的
info.pop("001")#()是必填项,key值,且有返回值,返回删除的这个key对应的value值
info.pop('不存在的','这是提示内容')#如果删除的值不存在,也就是'不存在的',不加后面的"这是提示内容",会报错,加了这个内容就会提示这些内容出来
print (info)
info.popitem()#()不需要填,随机剔除一个,有返回值,返回元组,就是删除的键值
print(info)
#循环字典元素时,进行删除,会直接报错,与列表list雷同
dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
for i in dic:
if 'k' in i:
del dic[i]
》》》Traceback (most recent call last):
for i in dic:
RuntimeError: dictionary changed size during iteration
dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
#可以新建字典,将剩余键值对加到新字典中
dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
dic1={}
for i in dic:
if 'k' not in i:
dic1[i]=dic[i]
print(dic1)
》》》{'v1': 'b1', 'v2': 'b2'}
#也可以先把键加到列表,再循环列表,对字典进行删除
dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
lis=[]
for i in dic:
if 'k' in i:
lis.append(i)
for i in lis:
del dic[i]
print(dic)
》》》{'v1': 'b1', 'v2': 'b2'}
修改
dic={"name":"张三","sex":"男","age":"22"}
dic["name"]="李四"#直接根据key值进行修改
print(dic)
》》》{'name': '李四', 'sex': '男', 'age': '22'}
dic={"name":"张三","sex":"男","age":"22"}
dic1={"name":"王五","height":"180"}
dic1.update(dic)#将另一个字典直接更新在本字典,本字典有相同的key会被覆盖,没有的会新增
print(dic1)
》》》{'name': '张三', 'height': '180', 'sex': '男', 'age': '22'}
查找
info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
#确定存在key值时用以下方法,否则不要用
print(info["002"])#[]内的值存在时,是不会报错的,不存在就会报错
#不确定是否存在key值时,用.get()方法,不会报错,不存在时,默认返回None,可以设置返回值,较安全
print(info.get("005"))
print("005"in info)#判断"005"是否存在字典info里面,都是用key值判断
其他
dic={"name":"张三","sex":"男","age":"22"}
print(type(dic.keys()),dic.keys())#输出的结果是列表,key的列表
》》》<class 'dict_keys'> dict_keys(['name', 'sex', 'age'])
print(type(dic.values()),dic.values())#输出的是value的列表
》》》<class 'dict_values'> dict_values(['张三', '男', '22'])
print(type(dic.items()),dic.items())#输出的是键值对的列表,列表里面是元组,key_value的元组
》》》<class 'dict_items'> dict_items([('name', '张三'), ('sex', '男'), ('age', '22')])
dic={"name":"张三","sex":"男","age":"22"}
for i in dic:#默认获取到key值,与加key值是一样的
print(i)
for i in dic.keys():#与默认的一致,不加key值是一样的
print(i)
》》》
name
sex
age
for i in dic.values():#获取到字典的value值
print(i)
》》》
张三
男
22
for i in dic.items():#获取到key和value组成的元组
print(i)
》》》
('name', '张三')
('sex', '男')
('age', '22')
for i,j in dic.items():#获取到key和value的字符串
print(i,j)
name 张三
sex 男
age 22
》》》
网友评论