python:数据类型( dict )

practice

字典

    dict { } 来表示  键值对数据   {key:value}  具有唯一性

    键 key:  都必须是哈希的,  不可变的数据类型才可以做字典中的键

    值 value: 没有任何的限制,任何数据类型都可以

      字典本身是无序的(不可以切片),但是3.6版本添加了有序 

 1 #字典的键key可以是什么,  值value(任何类型都可以)
 2 dic={"name":"alex","age":9000}  # 键可为字符串
 3 print(dic)
 4 dic={1:"a",2:"b",3:"c"}     # 键可为数字
 5 print(dic)
 6 dic={True:"1",False:"0"}    # 键可为bool
 7 print(dic)
 8 dic={(1,2,3):"ahd"}    # 键可为tuple 元组
 9 print(dic)
10 
11 dic={[1,2,3]:"abhd"}   #不可为列表  ****  集合也不可用做键
12 print(dic)

字典的增删改查

   补充:dic[key]=value   索引键key可用来 添加\删除\修改\查看

一、增加

    dic[key]=value                 #直接索引 键key 赋value值 更改

    dic.setdefault(key,value)  #如果key在字典中存在,不进行操作**,否则添加

                #也可以通过key查询,没有则返回None 

1 dic={"易大师":"剑圣","剑豪":"托儿所","草丛伦":"大宝剑"}
2 
3 dic["诺手"]="人头狗"  #新增 结尾处  如果key在字典中存在,就修改value值,不存在就在结尾处添加
4 print(dic)
5 
6 dic.setdefault("火女","安妮")  # 新增 结尾处 中间用逗号隔开
7 dic.setdefault("火女","火男")  # 如果key在字典中存在不进行任何操作,不存在就进行添加
8 print(dic)
View Code

二、删除     

              dic.pop(key)   #通过指定key删除字典中的内容,可返回被删除的Value值

    del dic[key]    #通过键来删除  不放key 则删除整个字典

    dic.clear( )      #清空字典

    dic.popitem( ) #随机删除,  在3.6版本中默认删除最后一个

           #也有返回值  返回的是元组  ( key,value )

    字典的删除没有 remove( )

dic={"易大师":"剑圣","剑豪":"托儿所","草丛伦":"大宝剑"}

ret=dic.pop("易大师")  # 通过指定key删除字典中内容,返回的是value值
print(ret)  # 接收到的删除的内容是value
print(dic)

del dic["易大师"]  # 通过键删除
print(dic)

dic.clear()  # 清空返回的是{} 空字典
print(dic)

ref=dic.popitem()   #随机删除   但在3.6版本中默认删除最后一个
                    #也有返回值 返回的是元组  ("key","value")
print(dic)
View Code

三、修改

    dic[key]=value         索引 键key 既可以用来修改也可以用来添加

    dic.update(字典名)   # 用新的字典去更新原字典

                替换时,若key值在原字典中存在,只修改value值,

                          不存在,在结尾处添加

dic={"易大师":"剑圣","剑豪":"托儿所","草丛伦":"大宝剑"}

dic["剑豪"]="哈莎阁"  #   索引键key  来强制修改
print(dic)

dic1={"火女":"安妮","火男":"布兰德","剑豪":"暗影猎手"}
dic.update(dic1)  #替换时,若key值在元字典中存在,则只修改value值,不存在的在结尾处添加
print(dic)
#输出:{'易大师': '剑圣', '剑豪': '暗影猎手', '草丛伦': '大宝剑', '火女': '安妮', '火男': '布兰德'}
View Code

四、查

    dic[key]                       #  索引 键key查看   不存在时会报错

    dic.get(key)     # 查看时 key 不存在会返回None

      dic.get(key,"自定义内容") # 查看时 key 不存在 也可返回自定义内容

    dic.setdefault(key)    #  即可查询,当有Value时,也可用于添加,key存在,无操作

    for 循环       #当 for i  in dic 时,获取的是key 

dic = {"易大师": "剑圣", "剑豪": "托儿所", "草丛伦": "大宝剑"}

# 查看的是value值
print(dic["易大师"])  # 查看1   键不存在时 会报错
print(dic.get("易大师"))  # 查看2   键不存在时 返回none  建议使用get
print(dic.get("易大师父", "你傻啊,没有"))  # 不存在 也可返回自定义的"你傻啊,没有"
print(dic.setdefault("易大师"))  # 查看3  也可用于查询  若赋值则可修改

# for循环查看的是key
for i in dic:
    print(i)  # 循环默认获取的是字典中的键
View Code

字典的其他操作

      keys    values     items 

dic={"易大师":"剑圣","剑豪":"托儿所","草丛伦":"大宝剑"}

print(dic.keys())      # 获取的是高仿列表
#输出:dict_keys(['易大师', '剑豪', '草丛伦'])

print(dic.values())     # 获取的是高仿列表
#输出:dict_values(['剑圣', '托儿所', '大宝剑'])

print(dic.items())     #高仿列表  获取的是每一个元组
#输出:dict_items([('易大师', '剑圣'), ('剑豪', '托儿所'), ('草丛伦', '大宝剑')])

for i in dic:
    print(i)   #输出key
for i in dic.keys():
    print(i)   #输出key
for i in dic.values():
    print(i)   #输出value
for i in dic.items():
    print(i)   #输出键值对,以元组( )的形式展现
View Code

      解构(解包)    

        将后面的解构打开,按照位置赋值给变量,

        支持字符串\列表\元组

a,b=(1,2)  #元组
print(a)   # 1
print(b)   # 2

a,b=[1,2]  #列表
print(a)  # 1
print(b)  # 2

a,b="12"  #字符串
print(a)  # 1
print(b)  # 2

dic={"1":"2"}
for a,b in dic.items():
    print(a)    #1
    print(b)    #2
View Code

补充:  

                  批量创建key   dic.formkeys() 

 

dic1={}

dics=dic1.fromkeys([1,2,3])   #批量创建 key
print(dics)
#输出:{1: None, 2: None, 3: None}

dics=dic1.fromkeys([1,2,3],"abc")
print(dics)
#输出:{1: 'abc', 2: 'abc', 3: 'abc'}
View Code

字典的嵌套

dic={"name":"汪峰",
     "age":39,
     "wife":{"name":"国际章",
             "age":39,
             "salary":100000
     },
     "baby":[
         {"name":"熊大","age":18},
         {"name":"熊二","age":15}
     ]
}
print(dic["baby"][0]["age"])    #查找熊大的年龄
print(dic.get("baby")[0].get("age"))   #查找熊大的年龄

dic["baby"][0]["age"]=19  #将熊大的年龄改为19

 

posted @ 2018-08-01 14:32  葡萄想柠檬  Views(1050)  Comments(0)    收藏  举报
目录代码