Python基础数据类型初识三


字典
增删改查
其他操作
嵌套
集合

字典,在其他语言中叫键值对数据,dict dic {'键':'值'}

存储数据,字典的查找更快一些

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

*****unhashable 不可哈希的,就是可变的数据;可变的数据不能哈希;不可变的数据能哈希
字典的键,是不可变数据类型; 键不能重复,重复的话就会把值覆盖;
字典的值可以随意;
通过键去查找值

字典的增删改查:

增:(字典和字典不能加)Python3.6版本以上字典默认有序,怎么写就怎么打印;但是出去和别人说字典是无序的)
  1.dic[键] = '值' (没有的时候叫增)
  2.***dic.setdefault(键,'')
  先在字典中通过键去查有没有值,没有就是None
  如果有值,就不进行添加
  如果是None,就添加值

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

改:
  dic.update({'':'','':''}) 更新,update括号中放一个字典
  如果被更新的内容在更新的内容中,值就会被覆盖
  两个字典中都没有一样的就是合并

  dic[键] = '值' 字典中没有的时候叫增,有这个键存在就叫改

查:
  通过键查找 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) 在取出键值对时直接做了解构

解构
a,b,c = #1,2,3 '456' [7,8,9] (7,8,9) {'1':8,'2':9,'3',0}

a = 10
b = 20
a,b = b,a

字典的嵌套:通过键查找


补充:
  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

猜你喜欢

转载自www.cnblogs.com/py8318/p/10221054.html