- images
- results
- .gitignore
- 1.1概论.ipynb
- 1.2 环境配置.pdf
- 1.3数据类型.ipynb
- 1.4 人机交互.ipynb
- 1.5 对象与变量.ipynb
- 1.6 编码与命名规范.ipynb
- 2.1 数值类型.ipynb
- 2.2 数值类型转换.ipynb
- 2.3 数值元算.ipynb
- 2.4常用数学运算函数.ipynb
- 2.5 math 模块及其应用.ipynb
- 2.6.1 逻辑值测试.ipynb
- 2.6.2 成员运算.ipynb
- 2.6.3 比较运算.ipynb
- 2.6.4 布尔运算.ipynb
- 2.6.5 运算优先级.ipynb
- 2.ipynb
- 3.1 流程控制结构.ipynb
- 3.3.1 for 循环语句.ipynb
- 3.3.3 rang.ipynb
- 3.3.3 while 循环语句.ipynb
- 3.4 and 3.5 分支结构和条件.ipynb
- 3.6 and 3.7 .ipynb
- 3.9 异常处理.ipynb
- 4 函数和模块化编程.ipynb
- 4.1 函数的定义、调用与返回值.ipynb
- 4.2 函数的参数传递.ipynb
- 4.3 变量的作用域.ipynb
- 4.4 匿名函数.ipynb
- 4.5 递归.ipynb
- 4.6 内置函数.ipynb
- 4.7 模块化程序设计.ipynb
- 5.1 序列通用操作.ipynb
- 5.1.1 索引.ipynb
- 5.1.2 切片.ipynb
- 5.1.3 序列拼接与重复.ipynb
- 5.1.4 成员测试.ipynb
- 5.2.1 字符串的创建.ipynb
- 5.2.2 字符串常量.ipynb
- 5.2.4 字符串的遍历.ipynb
- 5.2.5 文件遍历.ipynb
- 5.2.6 字符串的处理方法.ipynb
- 5.2.7 字符串格式化.ipynb
- 5.2.8 转义字符.ipynb
- 5.3 random 模块及其应用.ipynb
- 6.1 元组.ipynb
- 6.2 列表.ipynb
- 6.2.1 列表的创建.ipynb
- 6.2.2 列表的更新.ipynb
- 6.2.3 列表的删除.ipynb
- 6.2.4 列表的排序.ipynb
- 6.2.5 列表赋值与复制.ipynb
- 6.2.6 列表推导式.ipynb
- 6.2.8 常用内置函数.ipynb
- 6.2.9 列表嵌套及其排序.ipynb
- 6.3 列表综合应用.ipynb
- 7.1.1 集合的创建.ipynb
- 7.1.2可变集合类型的操作.ipynb
- 7.1.3 成员关系.ipynb
- 7.1.4 集合关系.ipynb
- 7.1.5 集合运算.ipynb
- 7.2.1 字典创建.ipynb
- 7.2.2 获取字典值.ipynb
- 7.2.3 修改字典值.ipynb
- 7.2.4内置函数与方法.ipynb
- 7.2.5字典排序输出.ipynb
- 7.3 集合与字典的应用.ipynb
- 8 中 numpy 概述.ipynb
- 8 中panda 库.ipynb
- 8.1 文件的打开与关闭.ipynb
- 8.2 文件读写操作.ipynb
- 8.3 文件的应用.ipynb
- 8.4 numpy 文件操作.ipynb
- 8.4.2 and 3.ipynb
- 8.5.1 pandas文件读写.ipynb
- 8.5.2 and 3 and 4.ipynb
- 9.1 matplotlib 线性图.ipynb
- 9.1.5 数据文化绘图.ipynb
- 9.2 非线性图.ipynb
- 9.3 词云.ipynb
- _overview.md
- _readme.ipynb
- coding_here.ipynb
- dream.png
- score.txt
- score_total.csv
- 成绩分析综合.json
7.2.1 字典创建.ipynb @master — view markup · raw · history · blame
字典的创建¶
字典(映射类型)¶
字典(dict)是Python内置唯一映射数据类型(Mapping Types),是一种**可变数据类型**,按**加入顺序**存储,但**不可用****序号索引**和**切片**等方法。
字典使用一对大括号“{}”来存放数据,元素之间用逗号“,”分隔。
每个元素都是一个**“键:值”(Key:Value)对**,用来表示“键”和“值”的映射关系或对应关系。

不同于以固定范围的数字进行索引的序列,字典是以**键**进行索引的,键可以是任何**不可变类型。**
**字符串**和**数字**总是可以作为键。
如果一个**元组**只包含字符串、数字或元组则也可以作为键;如果一个元组直接或间接地包含了**任何可变对象**,则不能作为键。
**列表**不能作为键,因为列表可以使用索引赋值、切片赋值或者 append() 和 extend() 等方法进行原地修改列表。
captial = {'中国':'北京', '日本':'东京', '法国':'巴黎', ['美国', 'USA']:'华盛顿'}
字典中的**键不可重复**,必须是字典中独一无二的数据。如有重复,只**保留最后一个元素**。
score_dict = {'python': 59.6, 'python': 60.0}
print(score_dict) # {'python': 60.0}
phone_dict = {'李明':'13988887777', '李明':'13866668888'}
print(phone_dict) # {'李明': '13866668888'}

数字类型用作键时遵循数字比较的一般规则:
如果两个数值相等 (例如 1 和 1.0) 则两者被认为是同一个键。。
但计算机内部存储浮点型数据时是非精确值,建议字典的键尽可能不使用浮点型数据。
num_dict = {1: 100, 1.0: 1000}
print(num_dict) # {1: 1000}

字典的值可以是任意类型的数据,也可以重复。
字典的主要用途是通过关键字存储、提取值。
字典的创建¶
创建空字典¶
创建一个不包含任何值的空字典,使用以下方法中的一种:
- 将一对空的大括号赋值给一个对象的方法创建空字典;
- 用dict()函数不加任何参数来创建空字典。
D1 = {} # 使用一对不包含任何数据的“{}”创建一个空字典数据
D2 = dict() # 使用字典构造器创建一个空字典数据
print(D1,D2) # 输出:{} {}

- ##### 创建非空字典
- 将用大括号界定的多个包含键值对的元素赋值给一个对象
D1 = {"name": '张三', 'age': 19, 'gender': 'M'}
print(D1)
- 使用字典构造器dict(),给键名赋值(创建映射),创建字典,注意:此处的键名不加引号。这种方法**不能**创建以Python**关键字**为字符串的键,如 'for'。
D2 = dict(name = '张三', age = 19, gender = 'M')
print(D2)
- 使用字典构造器dict(),参数必须为一个**可迭代对象**,该可迭代对象中的每个元素本身必须为一个刚好包含**两个元素**的可迭代对象。 每一元素中的第一个元素将成为新字典的一个键,第二个元素将成为其对应的值。
D3 = dict([('name', '张三'), ('age', 19), ('gender', 'M')])
print(D3)
- 使用字典构造器**无序**dict()结合内置**zip()函数**。zip()函数可产生一个可迭代对象,该可迭代对象中的每个元素本身为一个刚好包含两个元素的可迭代对象。
D4 = dict(zip(('name','age','gender'), ('张三',19,'M')))
print(D4)
以上这4种方法都将创建以下字典:
{'name': '张三', 'age': 19, 'gender': 'M'}

- ##### 使用dict.fromkeys(iterable[, value])创建字典
参数iterable是字典键的可迭代对象,value是可选参数, 设置键序列(iterable)的值。这里的value只能是一个值,可以是数字、字符串、列表或字典等,但只能是一个元素。该方法返回一个新字典,每个键具有相同的值,当value缺省时,值为None。 此种方法可根据已有键序列,快速创建一个包含相同值的字典。
course = ('Python','Java', 'C')
score1 = dict.fromkeys(course) # value缺省,值均为None
print(score1) # {'Python': None, 'Java': None, 'C': None}
score2 = dict.fromkeys(course,60) # 值均为60
print(score2) #{'Python': 60, 'Java': 60, 'C': 60}

- ##### 使用字典推导式快速的生成字典数据序列
phone_ls = [('李明','13988887777'), ('张宏','13866668888'), ('吕京','13143211234')]
dict1 = {k:v for k,v in phone_ls} # 用推导式从列表生成字典
print(dict1) #输出{'李明': '13988887777', '张宏': '13866668888', '吕京': '13143211234'}