字典常用方法总结,数据解构(解包)
Posted mr-wangxd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典常用方法总结,数据解构(解包)相关的知识,希望对你有一定的参考价值。
dict {‘name‘:‘holle‘}字典存储大量关联型数据,可迭代的,最多只有200个键。查询数据速度非常快,符合二分查找(有100个数比如找75会先找到50然后判断,所以2^7次方7次即可找到) 字典的key是唯一不可变的。3.6以前的版本字典是无序的。之后也是无序但显示有序 key:不可变的数据类型(可哈希) 比如:str bool tuple int 类型 value:可以是任一数据类型; 增: # #dic.setdefault(‘name‘,‘hello‘) 有则不变,无则增加,setdefault(key) 可通过key查,没有返回None #formkeys (太坑别用)dict.fromkeys(‘abc‘, ‘hello‘),返回一个新的字典,原字典不变。 dit1 = dict3.fromkeys(‘abc‘, ‘hello‘) dit2 = dict3.fromkeys([‘a‘, ‘b‘, ‘c‘], ‘hello‘) print(dit1) 输出:{‘a‘: ‘hello‘, ‘b‘: ‘hello‘, ‘c‘: ‘hello‘} print(dit2) 输出:{‘a‘: ‘hello‘, ‘b‘: ‘hello‘, ‘c‘: ‘hello‘} 坑,如果追加其中一个其余value都会改变,因为在内存中这几个是共用一个列表,一变则全都改变。 dit4 = dict3.fromkeys(‘abc‘, []) print(dit4) 输出:{‘a‘: [], ‘b‘: [], ‘c‘: []} dit4[‘a‘].append(‘hello‘) print(dit4) 输出:{‘a‘: [‘hello‘], ‘b‘: [‘hello‘], ‘c‘: [‘hello‘]} 删: #dic.pop(‘name‘) 按key值删除,返回被删除的value。 如果找不到对应的key会报错 如果不想报错,添加返回值参数,dic.pop(‘name‘,‘无name时的返回值‘)。 #dic.clear() 清空字典,只清空字典所有内容 #del dic 在内存中彻底删除字典 #del dic(‘age‘) 也可以按key删除,找不到报错 #dic.popitem() 随机删除,返回一个元组 (key, value) 改: #dic[‘hight‘] = 100 有hight项就会更改,没有就会增加 #update dict2.update(dict1) 将dict1的内容覆盖更新到dict2中,dict1中的内容不变 dict1 = {‘name‘: ‘jin‘, ‘age‘: 18, ‘sex‘: ‘male‘} dict2 = {‘name‘: ‘alex‘, ‘weight‘: 75} dict2.update(dict1) print(dict2) 输出:{‘name‘: ‘jin‘, ‘weight‘: 75, ‘age‘: 18, ‘sex‘: ‘male‘} 查: #dic[‘name‘] 直接按key值查 找不到报错 #get() dic.get(‘name‘)如果有这个键返回对应的value值,没有这个键会返回None -------用这个 dic.get(‘name‘,‘没有此key‘)也可以设置返回值 #dic.setdefault(key) 有返回value 没有返回None #for 循环查找 单循环只输出 key的值 dic = {‘qwe‘: 233, ‘aaa‘: 999} for i in dic: #输出key 的值 print(i) 输出:qwe aaa for k, v in dic.items(): #输出key 和 value print(k, v) 输出: qwe 233 aaa 999 字典的特有的其他操作 # for i in dic.keys(): # print(i) #获取到字典中的每一个键 # # for i in dic: # print(i) #获取到字典中的每一个键 # for i in dic.values(): # print(i) #获取到字典中的每一个值 # for i in dic.items(): # print(i) #获取到字典中的所有键值对 #keys() 返回列表所有的键值key在一个容器中(高仿列表),可以使用for循环遍历,或者list()类型转换变为一个列表。 dict2 = {‘name‘: ‘alex‘, ‘weight‘: 75} print(dict2.keys()) 输出:dict_keys([‘name‘, ‘weight‘]) for i in dict2.keys(): print(i) 输出:name weight 类型为字典中的原类型 或者: dict2 = {‘name‘: ‘alex‘, ‘weight‘: 75} print(list(dict2.keys())) 输出: [‘name‘, ‘weight‘] #value() 返回所有的value值。 dict2 = {‘name‘: ‘alex‘, ‘weight‘: 75} for i in dict2.values(): print(i) 输出:alex 75 #items 返回将键值对放在一个个小元组中, dict2 = {‘name‘: ‘alex‘, ‘weight‘: 75} print(dict2.items()) 输出: dict_items([(‘name‘, ‘alex‘), (‘weight‘, 75)]) print(list(dict2.items())) 输出 [(‘name‘, ‘alex‘), (‘weight‘, 75)] 或 for i in dict2.items(): 输出:(‘name‘, ‘alex‘) (‘weight‘, 75) #len print(dict.len()) 返回键值对的对数 解构(解包) # a,b = ‘12‘ #将后边解构打开按位置赋值给变量 支持 字符串 列表 元组 a, b = 1, 2 a, b = ‘12‘ a, b = [‘1‘, 2] a, b = (1, ‘2‘) print(a, b) 以上所有输出 都是 a==1 b==2 # dic = {‘易大师‘:‘剑圣‘,‘剑豪‘:‘托儿所‘,‘草丛伦‘:‘大宝剑‘} # for a,b in dic.items(): # dic1 = {} # dics = dic1.fromkeys([1,2,3],‘abc‘) 字典的嵌套 找出字典中的18改为19 dic = { ‘name‘:‘汪峰‘, ‘age‘:43, ‘wife‘:{ ‘name‘:‘国际章‘, ‘age‘:39, ‘salary‘:100000 }, ‘baby‘:[ {‘name‘:‘熊大‘,‘age‘:18}, {‘name‘:‘熊二‘,‘age‘:15}, ] } dic[‘baby‘][0][‘age‘] = 19 ----------嵌套的解法与 print(dic) 数据类型分类: 不可变的数据类型(可哈希):str,bool,tuple,int 可变的数据类型:dict,list,set 容器类数据类型:list,tuple,dict,set
以上是关于字典常用方法总结,数据解构(解包)的主要内容,如果未能解决你的问题,请参考以下文章