字典

Why:咱们目前已经学习到的容器型数据类型只有list,那么list够用?他有什么缺点呢?

1. 列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢。

2. 列表只能按照顺序存储,数据与数据之间关联性不强。

所以针对于上的缺点,说咱们需要引入另一种容器型的数据类型,解决上面的问题,这就需要dict字典。

what:

数据类型可以按照多种角度进行分类,就跟咱们人一样,人按照地域可以划分分为亚洲人,欧洲人,美洲人等,但是按照肤色又可以分为白种人,黄种人,黑种人,等等,数据类型可以按照不同的角度进行分类,先给大家按照可变与不可变的数据类型的分类:

不可变(可哈希)的数据类型:int,str,bool,tuple。

可变(不可哈希)的数据类型:list,dict,set。

字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的:

Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的。

Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等。

 在Python3.5版本(包括此版本)之前,字典是无序的。

 在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序)。

 当然,字典也有缺点:他的缺点就是内存消耗巨大。

  字典查询之所以快的解释:(了解)

字典的查询速度非常快,简单解释一下原因:字典的键值对会存在一个散列表(稀疏数组)这样的空间中,每一个单位称作一个表元,表元里面记录着key:value,如果你想要找到这个key对应的值,先要对这个key进行hash获取一串数字咱们简称为门牌号(非内存地址),然后通过门牌号,确定表元,对比查询的key与被锁定的key是否相同,如果相同,将值返回,如果不同,报错。(这里只是简单的说一下过程,其实还是比较复杂的。),下面我已图形举例:

'''
#数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool int str 可哈希
可变数据类型:list,dict set 不可哈希
dict key 必须是不可变数据类型,可哈希,
value:任意数据类型。
dict 优点:二分查找去查询
存储大量的关系型数据
特点:无序的
#55
#20
#60
#40
#50
#55
'''
dic = {
'name':['大猛','小孟'],
'py9':[{'num':71, 'avg_age':18,},
{'num': 71, 'avg_age': 18, },
{'num': 71, 'avg_age': 18, },
],
True:1,
(1,2,3):'wuyiyi',
2:'二哥',
}
print(dic)
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
#增:
dic1['high'] = 185 #没有键值对,添加
dic1['age'] = 16 #如果有键,则值覆盖 dic1.setdefault('weight') # 有键值对,不做任何改变,没有才添加。
dic1.setdefault('weight',150)
dic1.setdefault('name','二哥')
print(dic1) #删
print(dic1.pop('age')) # 有返回删除键对应的值,按键去删除
print(dic1.pop('二哥',None)) # 可设置没有键时返回值,不然会出现报错
print(dic1) print(dic1.popitem()) # 随机删除 有返回值(元组)里面是删除的键值。 3.6+默认按最后一个删除
# print(dic1) del dic1['name']
print(dic1)
#del dic1
#print(dic1) # dic1.clear() #清空字典 #改 update
dic1['age'] = 16 dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic) #把dic覆盖添加到dic2 print(dic)
print(dic2)
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} #查
print(dic1.keys(),type(dic1.keys())) # dict_keys(['age', 'name', 'sex']) <class 'dict_keys'>
print(dic1.values()) # dict_values([18, 'jin', 'male'])
print(dic1.items()) # dict_items([('age', 18), ('name', 'jin'), ('sex', 'male')]) for i in dic1: # 默认打出键值
print(i) for i in dic1.keys():
print(i) for i in dic1.values():
print(i) a,b = 1,2
print(a,b) a = 1
b = 2
print(id(a), id(b))
a,b = b,a #a,b 值互换
print(id(a), id(b))
print(a,b)
a,b = [1,2],[2,3]
print(a, b)
a,b = (1,2)
print(a,b)
for k,v in dic1.items():
print(k,v)
for k,v in dic1.items():
print(k,v) v1 = dic1['name']
print(v1) #v2 = dic1['name1'] # 报错
#print(v2) print(dic1.get('name1','没有这个键')) dic = {
'name':['alex','wusir','taibai'],
'py9':{
'time':'',
'learn_money':19800,
'addr':'CBD',
},
'age':21
}
dic['age'] = 56
print(dic['name'])
dic['name'].append('ritian')
l = [1,2,'wusir']
l[2] = l[2].upper()
dic['name'][1] = dic['name'][1].upper()
print(dic) #female : 6
dic['py9']['female'] = 6
print(dic) # fhdklah123rfdj12fdjsl3 ' 123 12 13'
info = input('>>>').strip()
for i in info:
if i.isalpha():
info = info.replace(i," ")
l = info.split() #['342', '34']
print(len(l))
# 14,补充代码(从已有的代码下面继续写):(6分)
# 有如下值li= [11,22,33,44,55,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
# li = [11,22,33,44,55,77,88,99,90]
# result = {}
# for row in li:
# ......
# li = [11,22,33,44,55,77,88,99,90]
# result = {'k1':[],'k2':[]}
# for i in li:
# if i > 66:
# result['k1'].append(i)
# elif i == 66:
# pass
# else:
# result['k2'].append(i)
# print(result) # 或者(有的话,直接添加,没有的话,创建一个在添加)
# li = [11,22,33,44,55,77,88,99,90]
# result = {}
# for row in li:
# if row > 66:
# if 'key1' not in result:
# result['key1'] = []
# result['key1'].append(row)
# if row < 66:
# if 'key2' not in result:
# result['key2'] = []
# result['key2'].append(row)
# print(result)

别人能做的事,你能做的更好。

Python-dict-12的更多相关文章

  1. Think Python - Chapter 12 Tuples

    12.1 Tuples are immutable(元组是不可变的)A tuple is a sequence of values. The values can be any type, and t ...

  2. Python dict operation introduce

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

  3. 十二. Python基础(12)--生成器

    十二. Python基础(12)--生成器 1 ● 可迭代对象(iterable) An object capable of returning its members one at a time. ...

  4. python & dict & switch

    python & dict & switch python 中是没用switch语句的,这应该是体现python大道至简的思想,python中一般多用字典来代替switch来实现. # ...

  5. 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

    # 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...

  6. 小白学 Python(12):基础数据结构(字典)(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  7. Python dict(或对象)与json之间的互相转化

    Python dict(或对象)与json之间的互相转化 原文转载自 1.JSON:JavaScript 对象表示法,是轻量级的文本数据交换格式,独立于语言,平台 2.JSON 语法规则 数据在名称/ ...

  8. Python dict() 函数

    Python dict() 函数  Python 内置函数 描述 dict() 函数用于创建一个字典. 语法 dict 语法: class dict(**kwarg) class dict(mappi ...

  9. python进阶12 Redis

    python进阶12 Redis 一.概念 #redis是一种nosql(not only sql)数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提 ...

  10. python day 12: 选课系统

    目录 python day 12 1. 通过类来创建选课系统 1.1 类库models.py 2. 配置文件setting.py 3. administrator.py 4. student.py p ...

随机推荐

  1. [Hive_add_2] Hive 数据类型

    Hive 数据类型 正常数据类型 # 整型,4个字节 int # 大整型,8个字节 bigint # 字符串,最大长度2G String 复杂数据类型 # 数组,相同类型元素的数组 array< ...

  2. Centos7系统详细的启动流程

    熟悉系统启动流程对于我们学习Linux系统是非常有帮助的,虽然基础,但能帮助我们更加理解Linux系统的工作机制.以下将以CentOS发行版为例来介绍Linux系统的启动流程,因为在CentOS 5. ...

  3. January 06th, 2018 Week 01st Saturday

    In life the most interesting things tend to happen when you are on your way to do something else. 生活 ...

  4. 阿里八八β阶段Scrum(4/5)

    今日进度 黄梅玲: 图表绘制与实时更新的完成 刘晓: 数据分析表格部分生成完成 张岳: 初步完成简易的桌面控件 陈裕鹏: 事件添加TAG标签的功能完成,此外信息抽取算法也基本完成并PULL,但与项目产 ...

  5. 【CSS3】transition过渡和animation动画

    转自:http://blog.csdn.net/XIAOZHUXMEN/article/details/52003135 写在前面的话: 最近写css动画发现把tansition和animation弄 ...

  6. Django urls 路由

    写url和视图的的对应关系 from django.conf.urls import url from django.contrib import admin from app名 import vie ...

  7. (13)Python文件操作

  8. 最好的8个 Java RESTful 框架

    原文出处: colobu 过去的每一年,涌现出越来越多的Java框架.就像JavaScript,每个人都认为他们知道一个好的框架的功能应该是怎么样的.连我的老祖母现在也使用 一个我从来没有听说过而且可 ...

  9. (3)lscpu详解 (每周一个linux命令系列)

    (3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...

  10. 斯坦福HAI—细数全球18件AI大事记

    3 月 18 日,由李飞飞担任所长之一的「以人为本人工智能研究所」(HAI)自启动以来不短的时间后,终于完成了正式成立的高光时刻.而正式上线的官网日前也更新了两条博文,一篇是详尽介绍 HAI 的文章: ...