字典、集合

dict

  字典,在python语言中叫字典,在其他语言中叫键值对数据,关键字是dict,dic = {'键':'值'},可用来存储数据,在数据查找中,字典的查找更快一些;字典是可变的数据类型

***
========================================
可变数据:list,dict,set
不可变数据:int,str,bool值,tuple,元祖
========================================
***

*****unhashable 不可哈希的,就是可变的数据;可变的数据不能哈希;

        不可变的数据能哈希
键:   必须是不可变数据类型; 而且不能重复,重复的话就会把值覆盖;
值:   可以随意;
    通过键去查找值

字典的增删改查:

增:
  dic[键] = '值' (没有的时候叫增)
  dic.setdefault(键,'')***
    先在字典中通过键去查有没有值,没有就是None
    如果有值,就不进行添加
    如果是None,就添加值

  (ps:字典和字典不能加,字典本身是无序的,但Python3.6版本以上字典默认有序,怎么写就怎么打印)

删:                    (字典中没有remove)
  del dic 删除整个字典
  del.[键] 通过键删除
  dic.pop( ) 指定键删除,有返回值,返回的是被删除的值
  dic.clear( ) 清空
  dic.popitem( ) 随机删除;py3.6删除最后一个,py3.5中随机删除

改:

dic.update({'':'','':''})        更新,update括号中放一个字典

两个字典中都没有一样的就是合并
    dic1 = {"11":"AA","22":"BB"}
    dic2 = {"33":"CC","44":"DD"}
    dic1.update(dic2)
    print(dic1)
    结果是dic1 = {"11":"AA","22":"BB","33":"CC","44":"DD"}  

如果被更新的内容在更新的内容中,值就会被覆盖
    dic1 = {"11": "AA", "22": "BB"}
    dic2 = {"11":"CC","44":"DD"}
    print(dic1)    
    结果是dic1 = {"11":"CC","22":"BB","44":"DD"}


dic[键] = ''   ps:  字典中没有的时候叫增,有这个键就是字典的改
   dic = {"11":"22","33":"44"}
   dic["11"] = ""55"
   print(dic)
   结果为{"11":"55","33":"44"}

查:
  通过键查找 print(dic[键]) 如果键不存在就报错
  print(dic.get(键)) 如果键不存在不报错,返回None
  dic.setdefault(键) 不存在返回None

其他操作:

dic = {}

循环打印字典的键:
  for i in dic:或者for i in dic.keys():
  print(dic.keys)==> dict_keys(['33','66']) keys,获取键,高仿列表
循环打印字典的值:
  for i in dic:或者for i in dic.values():
  print(dic.values)==> dict_values(['','']) values获取值,高仿列表
循环打印字典的键值对(解构):
  for i in dic:或者for i in dic.items():
  print(dic.items) items获取键值,以元祖的形式显示
  for k,v in dic.items:
  print(k)
  print(v) 在取出键值对时直接做了解构

补充:  

dic.get(键,'提示语句')    如果没有,就会返回提示语句   
dic.pop(键,'提示语句')    如果没有,就会返回提示语句
dic3 = dict.fromkeys([1,2,3,4,5,6],'好嗨哟') 快速补充,如果不写,默认为None
dic3 = dict.fromkeys([1,2,3,4,5,6],[1,2,3])
dic3[3].append( ),添加的内容是所有都加
第一个参数为键,是可迭代对象
第二个参数为值,值无所谓    是因为创建新字典的值用的都是一个

集合:

例: se = {1,25,6,3,58,1,3,5,86,8,4,2,1}
  set(天然去重),存出一些数据 跟列表有点像,和字典更像(单个的)
  不能使用下标,是无序的

一行代码去重:

  lst = [1,2,3,4,5,8,2,1,4,3,6]
  print(lst(set(lst)))

集合的增删改查:

增:
  se.add()
  se.update() update括号中是可迭代对象
删:
  se.pop() 集合中默认删除第一个
  se.remove() 通过内容删除
查询:
  for循环

常用操作:

s1 = {'刘能','赵四','皮革厂'}
s2 = {'刘科长','冯乡长','皮革厂'}
交集:    s1&s2
并集:    s1|s2    
差集:    s1-s2
反差集:    s1^s2
子集:    s1<s2
超集:    s2>s1

 

posted @ 2019-01-04 17:15  DF-包子  阅读(245)  评论(0编辑  收藏  举报