dict字典常用方法总结,数据解构(解包)
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字典常用方法总结,数据解构(解包)的更多相关文章
- Python 全栈开发:dict(字典)常用方法操作、dict嵌套
数据类型的划分:可变数据类型和不可变数据类型. 不可变数据类型(可哈希):元祖.bool.int.str 可变数据类型(不可哈希):list.dict,set(集合) dict(字典): dict(字 ...
- ES6解构赋值详解
文章转载自:http://www.zhufengpeixun.cn/article/167 解构赋值(destructuring assignment)语法是一个 Javascript 表达式,这种语 ...
- es6入门2--对象解构赋值
解构赋值:ES6允许按照一定规则从数组或对象中提取值,并对变量进行赋值.说直白点,等号两边的结构相同,右边的值会赋给左边的变量. 一.数组的解构赋值: 1.基本用法 let [a, b, c] = [ ...
- ES6入门之变量的解构赋值(二)
前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...
- 素数、杨辉三角、封装结构和集合操作(15)——IPython使用和封装解构
IPython使用 帮助 ? ##Ipython的概述和简介 help(name) ##查询指定名称和帮助 obj? ##列出obj对象的详细信息 obj?? ##列出更详细的信息 特殊变量 _表示前 ...
- TypeScript 解构和展开
解构数组 解构数组元素 let input = [1, 2]; let [first, second] = input; console.log(first,second); 交换值 [first, ...
- 【ES6 】ES6 解构赋值--数组解构赋值
定义 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 数组的解构赋值 以前,为变量赋值,只能直接指定值. let a = 1; let b = 2; let c = 3; ...
- JS 解构赋值
感谢原文作者:小火柴的蓝色理想 原文链接:https://www.cnblogs.com/xiaohuochai/p/7243166.html 介绍 解构赋值语法是一种 Javascript ES6引 ...
- Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict)
Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装和结构 #!/usr/bin/env pytho ...
随机推荐
- 解决双系统开机no such device:
问题描述: 我的电脑本来是Ubuntu+win7双系统,自己前天想换成win64位,于是就安装系统,结果装好了之后开机进入grub选择win7之后,屏幕显示 no such device: press ...
- android 阿拉伯语下,图库中编辑运动轨迹图片,动画中会显示绿色的图片
alps/packages/apps/Camera/src/com/android/camera/FileSaver.java 1:import java.util.Locale; 2:modify ...
- spring :概述
本章涵盖 spring's bean容器 探讨spring's 核心模块 强大的spring生态 spring 4新增内容 spring提供了众多的功能,但是这些功能都有基础的任务:让java开发变得 ...
- Elasticsearch5.X IN Windows 10 系列文章(3)
系统类型:windows10 64位家庭版 ElasticSearch版本: 5.5.1 (最新稳定版为5.5.2),由于用到IK中文分词插件,最新版本没有5.5.2 ,所以使用5.5.1 日期:20 ...
- svn删除账户信息
当我们需要清理eclipse中记录的SVN账号信息时,按如下操作: eclipse中打开window------>preferences------->SVN页面,如下所示: 一般情况下, ...
- 第一百九十九节,jQuery EasyUI,Panel(面板)组件
jQuery EasyUI,Panel(面板)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解EasyUI中Panel(面板)组件的使用方法,这个组件不依赖于其 ...
- iOS类目
首先我们解释一下类目是什么 iOS中类目是为给已经存在的类加入新的方法.(可是不能加入实例变量) 也就是说 我们已经有一个类了 .可是我们发现这个类眼下所提供的方法,满足不了我们的需求,我们须要新的方 ...
- JNI动态库生成、编译、查看相关简易资料
有一篇好博文,大家可以看下http://www.cnblogs.com/zhangweia/archive/2010/09/16/1828176.html,我这里是参考其做的另外一个javah -cl ...
- SQL.Cookbook 读书笔记3 操作多个表
第三章 操作多个表 表连接的内连接和外连接 A表 B表id name id name 1 a 1 b 2 b 3 c4 c内连接就是左表和右表相同的数据,查询结果只有相等的数据:select * fr ...
- nosql_action
ps -aux 查当前端口占用 connecting to: test > show dbs local .078125GB testphp .203125GB > use testph ...