08 python 初学(字典)
字典是 python 中唯一的映射类型 。采用键值对(key-value)的形式存储数据。
python 对 key 进行哈希函数运算,根据计算的结果决定 value 的存储地址,所以字典时无需存储的,且 key 必须是可哈希的。可哈希表示 key 必须是不可变类型,如:数字、字符串、元组。
字典是除列表之外 python 之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
字典两大特点:无序,键唯一
遇到字典就是键,遇到列表就是位置
声明:
dic1 = {'name': 'lily', 'age': ''}
# 第二种创建方式
dic2 = dict((('name','lily),))
输出内存地址:id()函数
a = 10
print(id(a))
b = a
print(id(b))
b = 15
print(id(b)) 输出:
140716292682864
140716292682864
140716292683024
不可变类型:整型、字符串、元组
可变类型:列表、字典
字典的操作:
增:
dic1 = {'name': 'lily'}
dic1['age'] = 18
print(dic1)
>>>{'name': 'lily', 'age': 18}
dic1.setdefault('age', 34) # 如果这个键有,不做任何变动;如果没有添加进去
print(dic1)
>>>{'name': 'lily', 'age': 18}
查:
print(dic1['name']) # 查,通过键去寻找
print(dic1.keys()) # 拿出所有的键
print(dic1.values()) # 拿出所有的值
print(dic1.items()) # 拿出所有的键值对 # 输出:
lily
dict_keys(['name', 'age'])
dict_values(['lily', 18])
dict_items([('name', 'lily'), ('age', 18)])
改:
dic1['name'] = 'mylily' # 通过键去改变值
print(dic1)
dic2 = {1: 111, 2: 222}
dic1.update(dic2) # 把dic2中的内容加入dic1,如果有相同的键,会对值做一个更新
print(dic1)
print(dic2)
# output:
{'name': 'mylily', 'age': 18}
{'name': 'mylily', 'age': 18, 1: 111, 2: 222}
{1: 111, 2: 222}
删:
del dic1['name']
print(dic1)
>>>{'age': 18, 1: 111, 2: 222} # 清空字典,字典是空的;相比 del dic1,是删除字典,字典不存在了,print会报错
dic1.clear()
print(dic1)
>>>{} # 删除指定键值对,并返回该键值对的值
print(dic1.pop('name'))
>>>mylily # 随即删除一组键值对
a = dic1.popitem()
print(a, dic1)
>>>(2, 222) {'name': 'mylily ', 'age': 18, 1: 111}
字典其他操作以及涉及到的方法:
# 另一种字典声明方式,不常用。后面作为一个统一的值赋给每一个键
dic3 = dict.fromkeys(['host1', 'host2', 'host3'], 'test')
print(dic3)
# >>>{'host1': 'test', 'host2': 'test', 'host3': 'test'}
字典的嵌套:
school = {
'初一': {
'一班': ['hong', 'su', 'lily'],
'二班': ['gang', 'ming']
},
'初二': {
'一班': ['ququ', 'xiaoming']
},
'初三': 42
}
school['初一']['一班'][2] = 'mylily'
print(school)
# {'初一': {'一班': ['hong', 'su', 'mylily'], '二班': ['gang', 'ming']}, '初二': {'一班': ['ququ', 'xiaoming']}, '初三': 42}
字典的排序:对整个字典排序是对键来排序; 如果要对值进行排序可以sorted(sorted_dic.values());如果是sorted(sorted_dic.items()),则是输出排序后的每个键值对,但顺序也是按照键来排序的
sort_dic = {0: 555, 2: 222, 1: 111}
print(sorted(sort_dic))
# >>>[0, 1, 2]
字典的遍历:如果要得到键和值,推荐使用第一种方式,效率比较高。第二种方式 item 转换成列表的时间远超过通过索引查值
for i in sort_dic:
print(i) # 输出的 i 是键
for i in sort_dic.items():
print(i)
# (0, 555)
# (2, 222)
# (1, 111)
08 python 初学(字典)的更多相关文章
- 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...
- Python中字典和集合
Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...
- Python的字典
1. Python的字典 1.1. 字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...
- Python的字典和JSON
Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...
- python基础--字典
Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...
- Python dictionary 字典 常用法
Python dictionary 字典 常用法 d = {} d.has_key(key_in) # if has the key of key_in d.keys() ...
- python有序字典OrderedDict()
转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...
- python:字典嵌套列表
Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...
- Python的字典类型
Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...
随机推荐
- Spring之AOP的注解配置
配置过程可以简单的分为3步: 1,业务类配置 在业务类前加入,将业务类交由Spring管理 @Component("s") 这个表示,这个业务类的Bean名字为 s . 2,将切点 ...
- C#基础(201)--常量枚举
本文知识点: 1.掌握常量的定义和使用方法 2.理解枚举的作用和特点 3.掌握枚举的使用方法 1.1.常量的定义语法 const 数据类型 常量名称 = 值: 1.2.常见错误 1.3常量的 ...
- websocket 与 tornado 的结合
对于socket是不陌生的,但是对于websocket我却是陌生的,不同于https,在网页中使用websocket可以同样起到ajax的作用,默默发送数据... 在script中: ws = new ...
- Android Studio--gradle:download 过慢甚至超时timeout报错
问题描述 今天第一次学习安卓,配置环境花了不少时间其他都比较容易的解决了 gradle 因为会从外国的网站下载东西会非常的慢(具体原理我也不清楚),所以最好让下载地址变成国内的 解决方案(最后有升级方 ...
- 微信小程序 刷新当前页面
刷新当前页面 Measure 法一: 需要的地方 this.onLoad(),试过之后,无用!!! 法二:亲测有效 在this.onReady()中进行获取数据操作(这样一来,就既可以在初次显示时直接 ...
- Pycharm启动后加载anaconda一直updating indices造成Pycharm闪退甚至电脑崩溃
可能跟anaconda文件夹有一定关系 网上找找解决方案,似乎很多人有同样的困扰! 知乎-pycharm启动后总是不停的updating indices...indexing? stackoverfl ...
- (网页)angularJs中怎么模拟jQuery中的this?(转)
转载自mini_fan博客园: 今天想在Angular项目中使用jQuery的this功能,发现undefined.代码如下: HTML部分: <p ng-click="testCli ...
- Multiple Server Query Execution报The result set could not be merged..
在SQL Server中使用Multiple Server Query Execution这个功能做数据库维护或脚本发布时非常方便,昨天由于磁盘空间原因,删除清理了大量的软件和组件,结果导致SSMS客 ...
- 洗礼灵魂,修炼python(86)--全栈项目实战篇(12)—— 利用socket实现文件传输/并发式聊天
由于本篇博文的项目都很简单,所以本次开个特例,本次解析两个项目,但是都很简单的 项目一:用socket实现文件传输 本项目很简单,作为小项目的预热的,前面刚学完socket,这里马上又利用socket ...
- scrapy入门:安装scrapy
1.安装Scrapy pip 安装: pip install scrapy 要求pip至少是18.1版本的,10.x版本会提示更新pip 更新pip命令: python -m pip install ...