dict
{'name':'holle'}字典存储大量关联型数据,可迭代的,最多只有200个键。查询数据速度非常快,符合二分查找(有100个数比如找75会先找到50然后判断,所以2^7次方7次即可找到)
字典的key是唯一不可变的。3.6以前的版本字典是无序的。之后也是无序但显示有序
key:不可变的数据类型(可哈希) 比如:str bool tuple int 类型
value:可以是任一数据类型; 增:
#dic['hight'] = 100                    通过key强制改,有hight项就会更改,没有就会增加
#
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 = ''
a, b = ['', 2]
a, b = (1, '')
print(a, b) 以上所有输出 都是 a==1 b==2
字典的嵌套
找出字典中的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

dict字典常用方法总结,数据解构(解包)的更多相关文章

  1. Python 全栈开发:dict(字典)常用方法操作、dict嵌套

    数据类型的划分:可变数据类型和不可变数据类型. 不可变数据类型(可哈希):元祖.bool.int.str 可变数据类型(不可哈希):list.dict,set(集合) dict(字典): dict(字 ...

  2. ES6解构赋值详解

    文章转载自:http://www.zhufengpeixun.cn/article/167 解构赋值(destructuring assignment)语法是一个 Javascript 表达式,这种语 ...

  3. es6入门2--对象解构赋值

    解构赋值:ES6允许按照一定规则从数组或对象中提取值,并对变量进行赋值.说直白点,等号两边的结构相同,右边的值会赋给左边的变量. 一.数组的解构赋值: 1.基本用法 let [a, b, c] = [ ...

  4. ES6入门之变量的解构赋值(二)

    前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...

  5. 素数、杨辉三角、封装结构和集合操作(15)——IPython使用和封装解构

    IPython使用 帮助 ? ##Ipython的概述和简介 help(name) ##查询指定名称和帮助 obj? ##列出obj对象的详细信息 obj?? ##列出更详细的信息 特殊变量 _表示前 ...

  6. TypeScript 解构和展开

    解构数组 解构数组元素 let input = [1, 2]; let [first, second] = input; console.log(first,second); 交换值 [first, ...

  7. 【ES6 】ES6 解构赋值--数组解构赋值

    定义 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 数组的解构赋值 以前,为变量赋值,只能直接指定值. let a = 1; let b = 2; let c = 3; ...

  8. JS 解构赋值

    感谢原文作者:小火柴的蓝色理想 原文链接:https://www.cnblogs.com/xiaohuochai/p/7243166.html 介绍 解构赋值语法是一种 Javascript ES6引 ...

  9. Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict)

    Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装和结构 #!/usr/bin/env pytho ...

随机推荐

  1. centos 启动 nginx

    service nginx start https://jingyan.baidu.com/article/bad08e1ec2adc709c85121aa.html

  2. 第八章 springboot + mybatis + 多数据源2(解决循环引用)

    解决了循环引用 1.application.properties #the first datasource jdbc.names:1,2 jdbc1.driverClassName = com.my ...

  3. vue 深入响应式原理

    vue最显著的特性就是不太引人注意的响应式系统(reactivity system),模型层(model)只是普通的javascript对象,修改它则更新视图view.这会让状态管理变得非常简单且直观 ...

  4. js和jquery触发按钮点击事件

    js触发按钮点击事件 function load(){ //下面两种方法效果是一样的 document.getElementById("target").onclick(); do ...

  5. tomcat遇到版本问题

    1.Dynamic web module 2.J2EE  Web modules 3.Tomcat version 4.<web-app xmlns:xsi="http://www.w ...

  6. HashMap与HashTable原理及数据结构

    HashMap与HashTable原理及数据结构 hash表结构个人理解 hash表结构,以计算出的hashcode或者在hashcode基础上加工一个hash值,再通过一个散列算法 获取到对应的数组 ...

  7. Python urllib的urlretrieve()函数解析 (显示下载进度)

    #!/usr/bin/python #encoding:utf-8 import urllib import os def Schedule(a,b,c): ''''' a:已经下载的数据块 b:数据 ...

  8. libsvm以概率输出单个test样例的判别结果

    在函数svmtrain和svmpredict的输入参数部分加入'-b 1'比如原先是 svmtrain -c 8.0 -g 0.0078125 a1a.scale 修改过后就是 svmtrain -b ...

  9. 安装nextant

    1. 安装java sudo apt-get install default-jre 然后用下面语句试试 java -version 2. 下载和解压solr,去https://lucene.apac ...

  10. P​H​P​制​作​姓​名​、​学​号​。​爱​好​等​窗​口

    if (radioButton1.Checked == true)                textBox2.Text = 姓名: + textBox1.Text +    性别: + radi ...