python里的字典和集合

一.字典

1.字典的定义

字典是不可变的,是用hash值来存储的.字典的key必须是不可变的(可哈希)

dict = {key1:value1 , key2:value2}

2.字典的增删改查

直接dict[newkey]="newvalue"

dict.setdefault("key","value")

setdefault执行流程:

判断你的key是否存在,如果已经存在就不再新增.如果不存在,执行新增操作

dic = {"jay":"周杰伦","jj":"林俊杰"}
dic["j"] = "我也不知道"   #dic[newkey] = "newvalue"
#dic.setdefault("j","我也不知道")
print(dic)

dict.pop("key")   指定删除key和对应的value

dict.popitem()    从后往前删 在早期字典是无序的,所以早期是随机删除

del dict[key]        指定删除key和对应的value

dict.clear()           清空字典

dic = {"张艺谋":"红高粱","李安":"断背山","陈凯歌":"霸王别姬"}
dic.pop("张艺谋")   #指定删除
dic.popitem()     #删除最后一个   python早期版本是无序的
del dic["李安"]    #指定删除
dic.clear()    #清空
print(dic)

dict[oldkey] = newvalue

dict1.update(dict2)  #把dict2的内容更新到dict1中

直接使用key就能查到value

dict.get(key,None)  当key存在查询value,不存在返回None(None可以换)

dict.setdefalut()  第一个功能是添加(当key不存在).第二个功能是查询(当key存在)

setdefalut整个执行流程:

判断给的key是否存在. 如果存在. 就不执行新增流程.直接查询出这个key对应的value
如果key不存在. 先执行新增操作. 再使用key把对应的value查询出来

dic = {"刘能":"王小利","赵四":"刘晓光","王木生":"范伟"}
print(dic["刘能"])
print(dic.get("王木生"))
print(dic.get("刘能呢","没有"))
setdefault     两个功能    添加和查找
检查是否有key  如果没有,先添加到字典,再使用key查询value
                          如果有key,直接查询key的valu
s = dic.setdefault("赵四四","流光")
print(s)

3.字典的嵌套

一层一层寻找,和列表一样

4.字典的遍历

直接for循环

for key in dic: # 直接循环字典拿到的是key, 有key直接拿value
     print(key)
     print(dic[key])

dict.keys()     拿到字典的每一个key

dict.values()    拿到字典的每一个value

dict.items()    拿到字典的所有键值对

 for k, v in dic.items(): # 遍历字典最简单的方案
      print(item) # ('赵四', '刘晓光')
      k, v = item # 解构
      k = item[0]
      v = item[1]
      print(k, v)

遍历字典的两种方法:

dic = {"周五":"等着放假","周六":"放假","周日":"等着上课"}
#遍历字典的两种方法
for i in dic:
    print(i,dic[i])   # i是遍历到的key  dic[i]是对应的value
for k,v in dic.items():  #dic.items()
                         拿到的是[('周五', '等着放假')]
                          解包
    print(k,v)

二.set集合

1.set集合的用处

用的最多的就是去重复

lst = ["麻将", "牌九", "骰子", "扑克", "骰子", "扑克", "扑克", "扑克", ]
print(list(set(lst)))

2.set集合的增删改查

s.add(元素)     直接添加      set是无序的

s.update()        迭代添加

s = {"刘嘉玲","赵本山","罗纳尔多","剑神"}
s.add("剑圣")
s.update("剑圣")  #迭代添加
s.update(["剑圣"]

s.pop()     随机删除一个

s.remove(元素)    指定删除一个

s.pop()   #因为set是无序的 ,所以随机删.  ()里没有arg
s.remove("剑神")   #指定删

只能先删除再添加

可迭代,用for循环

猜你喜欢

转载自www.cnblogs.com/q767498226/p/10046834.html