字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

可变数据类型:列表list,字典dict     又叫不可哈希

不可变数据类型: 元祖,bool值,数字int,字符型str            本身不可变,又叫可哈希

key  键,必须是不可变类型,可哈希

value 值,任意数据类型

创建空字典使用 { }

字典dict优点:

      1,用二分法查询,查询速度快

      2,储存大量的关系型数据

字典dick特点:

      字典dict是无序的。(3.5及之前的字典dict是无序的)

简写为dic

dic = {
'name':'xiaoming',
'age':18,
'num':[1,2,3,'alex'],
's1':{'xiao':'han','gh':[1,2,3,4]},
'qq':123
}
print(dic) 结果 {'name': 'xiaoming', 'age': 18, 'num': [1, 2, 3, 'alex'], 's1': {'xiao': 'han', 'gh': [1, 2, 3, 4]}, 'qq': 123}

,两种方法(注意与列表list区别)

直接加,如果没有对应键值,则直接加在后面。如果有对应键值,则进行覆盖。
dic1 ={'name':'xiaojun'}
dic1['height'] = 180
print(dic1)
dic.setdefault('')  形式,有对应键值,则不做任何修改。没有对应键值,后面默认加None
dic = {
'name':'xiaoming',
'age':18,
'num':[1,2,3,'alex'],
's1':{'xiao':'han','gh':[1,2,3,4]},
'qq':123
}
dic.setdefault('weighe') print(dic)
dic.setdefault('weighe',180)  另一种形式
dic = {
'name':'xiaoming',
'age':18,
'num':[1,2,3,'alex'],
's1':{'xiao':'han','gh':[1,2,3,4]},
'qq':123
}
dic.setdefault('weighe',180) print(dic)
结果 {'name': 'xiaoming', 'age': 18, 'num': [1, 2, 3, 'alex'], 's1': {'xiao': 'han', 'gh': [1, 2, 3, 4]}, 'qq': 123, 'weighe': 180}

dic.pop(‘’)直接删
dic = {'name':'xiaoming','age':18}
dic.pop('age')
print(dic)
有返回值,返回被删除的键值
dic = {'name':'xiaoming','age':18}
s = dic.pop('age')
print(s)
结果18
可设置返回值,如果没有对应的被删键值,返回自己设定的值,就是下面的‘不错’
dic = {'name':'xiaoming','age':18}
s = dic.pop('aa','不错') #如果aa变成name,则返回小明
print(s)
结果 不错
dic.popltem()形式,随机删除一个,3.6版本默认删除最后一个

dic = {'aa':'xiaoming','age':18}
dic.popitem()
print(dic) 结果 {'aa': 'xiaoming'}
dic = {'aa':'xiaoming','age':18}  #这种,有返回值
print(dic.popitem())
结果 ('age', 18)
清空列表
dic = {'aa':'xiaoming','age':18}
dic.clear() print(dic) 结果 {}

直接改
dic = {'name':'xiaoming','age':18}
dic['age'] = 16
print(dic)
dic1.update(dic)覆盖增加,把dic覆盖增加到dic1中,
dic = {'name':'xiaoming','age':18}
dic1 ={'name':'xiaojun','height':180}
dic1.update(dic)
print(dic1)
dic和dic1中对应的键,则用dic的键值覆盖dic1的,dic没有与dic1中对应的减,则直接加入dic1中,dic1中多的键值,则直接保留
结果{'name': 'xiaoming', 'height': 180, 'age': 18}

dic['直接查']直接查,没有会报错
dic = {'name':'xiaoming','age':18}
print(dic["name"])
dic.get('high','设置返回的值‘)
dic = {'name':'xiaoming','age':18}
print(dic.get("high","默认返回值") ) # 没有可以返回设定的返回值
#print(dic.get('high')) 默认返回None
只打印键
dic = {'name':'xiaoming','age':18} = dic = {'name':'xiaoming','age';18}
for i in dic: = for i in dic.keys():
print(i) = print(i) 结果 name 结果 name
   age age
只打印值
dic = {'name':'xiaoming','age':18}
for i in dic.values():
print(i) 结果 xiaoming
18
a = 1
b = 2
a,b = b,a
print(a,b)
items  同时打印keys 和 valuces
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
for i in dic.items():
print(i)

python基础类型—字典的更多相关文章

  1. python基础类型(字典:dict)

    字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...

  2. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  3. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  4. python基础之字典、集合

    一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...

  5. Python基础知识---字典

    现在在实习期间,好久没用Python了,今天在做Java项目时用的HashMap让我联想到了Python中的字典,就写一些Python字典的知识吧,复习复习. 字典:  key --> valu ...

  6. python基础类型,字符串

    python基本类型小结 # str,可以用索引取值,但是不能通过索引改变值, # a = "123" a[0]=10,直接TypeError因为字符串是不可变类型 # list, ...

  7. 5、Python 基础类型 -- Dictionary 字典类型

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d ...

  8. python基础5 字典

    一.字典 字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据. 同样他也是python中唯一的映射类的数据类型. 数据类型的分类: 可变的(不可哈希)数据类型:list,dict ...

  9. python基础_字典_列表_元组考试_day4

    1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain'] li=['alex','eric','rain'] v="_".jo ...

随机推荐

  1. poj1703 Find them, Catch them(并查集)

    https://vjudge.net/problem/POJ-1703 9ms多,卡着时间过了.上次一道并查集也是这样,总觉得要学一波并查集的优化.. 续:好像是可以只做一层存放敌人即可. #incl ...

  2. 部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0)

    部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0) 部署Bookinfo示例程序   在下载的Istio安装包的samples目录中包含了示例应用程序. ...

  3. 吐槽下mac的打印机设置

    只有第一次使用的时候,会提示密码和用户名验证,但是如果中途修改了密码, 找了半天都找不到,给人一种挫败感. 最后是在:点击作业队列某一作业右边的刷新按钮,才会弹出验证的对话框, 可能,mac当初设计这 ...

  4. 【问题与解决】怎么删除TFS云端上的项目

    最近使用了Visual Stuidio提供的网络项目管理,感觉跟visual stuido结合起来还是很好用的,新建项目很简单,但是在删除项目的时候就没有那么简单了,直接通过VS的团队管理删除还会报错 ...

  5. Android Studio3.1.2升级问题:Configuration 'compile' is obsolete and has been replaced with 'implementation'.

    每次升级Android Studio时,一般情况下Gradle版本的也会相应的升级,我之前Android Studio 3.0.1.Gradle 是4.1升级后为:Android Studio 3.1 ...

  6. VMware中虚拟机与主机不能ping通解决办法

    先去看看服务全部启动了没? VMware相关服务启动关闭脚本     启动了还报错,接着往下看......     一.如果是桥接模式,那么 可能性1:虚拟机防火墙禁ping,请关闭虚拟机防火墙重试: ...

  7. WIN10系统提示无法使用内置管理员账户打开XXX应用程序怎么办

    重装了系统之后,只保留Administrator账户,结果打开程序的时候回弹出这个提示   运行,输入secpol.msc   本地策略-安全选项,启用下面这个,然后重启计算机      

  8. 【Google设计冲刺】一种适合于创新小组的协作方式

    传统的产品闭环是1.产品策划-2.研发-3.上线-4.等待市场反馈,4个步骤.对于一个创新项目来说,试错成本过高,等待周期过长[注释1].那么,有没有一种适合创新项目的协作方式呢?谷歌风投杰克·纳普发 ...

  9. 关于Django Ajax CSRF 认证

    CSRF(Cross-site request forgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的 ...

  10. iframe相关小结

    父页面调用子页面方法, 子页面加载父页面传送的数据记录了父子间的调用和数据加载. 以下是另一些关于iframe的小结: 1:document.getElementById("ii" ...