day 05 字典

字典/集合

一.什么是字典?

字典是无序的,无法通过索引切片

字典是以 "key:value"的形式来保存数据

用 {}表示. 存储的是key:value

字典的key值不能重复,必须是可hash(可hash的东西都是不可变的)的

二.字典的增删改查(重点)

增:

  1.dic[新key] = 值

 

  
dic= {"河南":"胡辣汤", "开封": "灌汤包", "武汉":"热干面"}
dic['云南'] = "烩面" # 老key = 值
print(dic)
View Cod

  2.dic.setdefault("key","value")(有添加的功能,如果key是存在的. 不添加

       流程: 判断你给的key是否在字典中存在了.如果已经存在了. 就不再新增. 如果不存在. 执行新增操作)

  

  
dic = {"意大利": "李云龙", "美国": "美国往事"}
dic.setdefault("美国", "三傻大闹宝莱坞")
print(dic)
View Code

   3.dic.fromkeys

  

  
seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print ("新的字典为 : %s" %  str(dict))

dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" %  str(dict))

#结果为:
新的字典为 : {'age': None, 'name': None, 'sex': None}
新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
View Code

 

 

删:

  1.pop(key),(指定删除某个""key")

  

  
dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}
dic.pop("郭德纲")
View Code

 

  

  2.del dic[key],(指定删除某个""key",与pop的写法不同,删除指定的某一个元素,也可以删除整个字典)

  

  

dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}
del dic["李安"]
print(dic)
View Code

 

   

  3.dic.popitem(),(随机删除某一项,默认删除最后一位)

  

  
dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}
dic.popitem()
print(dic)
View Code

 

   

  4.dic.clear(),(清空字典里的内容,保留空字典)

  

  
dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}
dic.clear()
print(dic)
View Code

 

 改:

  1.dic["老key"] = "新值"

  

  
dic = {"河南":"胡辣汤", "开封": "灌汤包", "武汉":"热干面"}
dic['河南'] = "烩面" # 老key = 值
print(dic)
View Code

 

 

   2.dic1.update("dic2")

  

  
dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
dic2 = {"赵四":"宝宝", "刘能":"萌萌", "皮校长":"皮长山"}
dic.update(dic2)
print(dic)
print(dic2)
View Code

 

 

查:

  1.dic["key"],(直接使用key就可以拿到value)

 

  2.dic.get("key")

   

  
dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
print(dic1.get("刘能能"))  # None 当key不存在返回None
print(dic1.get("刘能能", "没有这个人")) # 当key不存在. 返回第二个参数. 默认第二个参数是None
View Code

   

  2.dic.setdefault(key),第一个功能是添加(当key不存在). 第二个功能是查询(根据你给的key查询)

  

  

  
dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
ret = dic1.setdefault("赵四")
print(ret)
View Code

 

 

三.字典的嵌套

wf = {
    "name":"汪峰",
    "age":52,
    "hobby":["唱歌", "上头条", "穿皮裤"],
    "wife": {
        "name": "章子怡",
        "age": 49,
        "hobby":["演戏", "上电视", "当导师"],
        "tishen": {
            "name":"萌萌",
            "age":28
        },
        "zhuli":{
           "name":"磊磊",
           "age": 20
        }
    },
    "zhuli":{
        "name":"宝宝",
        "age":23,
        "hobby":["抽烟","喝酒","烫头"]
    },
    "children":[{"name":"汪老大"}, {"name":"汪老二"}]
}
View Code

 

 

1.给汪老二添加一个年龄

wf['children'][1]["age"] = 2
View Code

 

2.找到汪峰的助理

print(wf['zhuli']['name'])
View Code

 

3.汪峰老婆替身的名字

print(wf['wife']['tishen']['name'])
View Code

 

4.汪峰老婆的第二个爱好

print(wf['wife']['hobby'][1])
View Code

 

5.汪峰助理的第三个爱好

print(wf['zhuli']['hobby'][2])
View Code

6.汪峰的助理+10岁

wf['zhuli']['age'] = wf['zhuli']['age'] + 10
View Code

 

7.汪峰的老婆添加一个爱好("导戏")

wf['wife']['hobby'].append("导戏") # 添加完毕了
View Code

 

8.删除汪峰助理的"抽烟"爱好

wf["zhuli"]["hobby"].remove("抽烟")
View Code

 

 

四.set 集合

1.什么是集合

集合是可迭代对象

 

集合中的元素必须可哈希(不可变的)

 

集合套集合->不能互相嵌套的

 

集合本身是可变的数据类型 . 不可哈希

 

集合跟字典一样,是无序的,无法通过索引切片

 

""{}""就是集合,集合是无序的,集合中的元素是不重复的. 必须是可哈希的(不可变), 字典中的key,集合其实就是不存value的字典

 

2.集合的去重

s = {"周润发", "大润发", "王润发", "周润发"} # 不重复的
print(s)
View Code

 

 

3.集合的去重

>>>可把列表转换成集合,可以做到去重的作用<<<

lst = ["麻将", "牌九", "骰子", "扑克", "老胡机", "骰子", "扑克", "老胡机", "扑克", "老胡机", "扑克", "老胡机"]
s = set(lst)
print(s)
View Code

 

>>>把集合变回成列表,顺序是乱的<<<

lst = ["麻将", "牌九", "骰子", "扑克", "老胡机", "骰子", "扑克", "老胡机", "扑克", "老胡机", "扑克", "老胡机"]
s = set(lst)
# # 把集合变回列表
# lst = list(s)
# print(lst) # 顺序是乱的
View Code

 

 

4.集合的增删改查

增:

  1.set.add("content")(添加一条内容)

  
s = {"刘嘉玲", "赵本山", "莱昂纳多迪卡普里奥", "罗纳尔多"}
s.add("刘嘉玲") # 因为集合是不可重复的,所以这里不会添加,如果没有就会被添加
print(s)
View Code

   

  2.set.update({"content1","content2","content3".......}),(迭代更新)

  

  
s = {"刘嘉玲", "赵本山", "莱昂纳多迪卡普里奥", "罗纳尔多"}

s.update({"刘嘉玲", "刘能", "赵四"}) # 迭代更新
print(s)

#结果:
#        {'刘嘉玲', '罗纳尔多', '赵本山', '赵四', '莱昂纳多迪卡普里奥', '刘能'}
View Code

 

 

删/改:

  1.set.remove("content")

  

  
# s = {"刘嘉玲", "赵本山", "莱昂纳多迪卡普里奥", "罗纳尔多"}
# 把罗纳尔多修改成梅西
# s.remove("罗纳尔多")
# s.add("梅西")
# print(s)
View Code

 

  

 

5.交集.并集.差集.反差集

s1 = {"门神", "灯神", "灯神你在笑什么?"}
s2 = {"门神", "灯神", "你俩在干什么?"}
View Code

 

1.交集

print(s1 & s2)
print(s1.intersection(s2))
View Code

 

 

2.并集

print(s1 | s2)
print(s1.union(s2))
View Code

 

 

3.差集

print(s1 - s2) # s1中特有的内容
print(s1.difference(s2))
View Code

 

 

4.反差集

print(s1 ^ s2) # 两个集合中特有的内容
print(s1.symmetric_difference(s2))
View Code

 

posted @ 2018-12-05 15:17  jack_zhangn`  阅读(139)  评论(0编辑  收藏  举报