字典常用方法总结,数据解构(解包)

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 

 

以上是关于字典常用方法总结,数据解构(解包)的主要内容,如果未能解决你的问题,请参考以下文章

python中几种数据类型常用的方法

Common Lisp:在 first、rest、last 中解构列表(如 Python 可迭代解包)

使用解包方法更新字典的优点

python常用代码片段总结

封装解构,集合,字典,内建函数和简单选择排序相关知识及习题

Python 字典常用方法总结