python基础知识——内置数据结构(字典)
时间:2022-05-04
本文章向大家介绍python基础知识——内置数据结构(字典),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。
1、字典的创建
格式
dictionary_name = {key1 : value1, key2 : value2, ...}
创建空的字典
dictionary_name = {}
例如
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
输出:{'s': 'shanghai', 'b': 'beijing', 'g': 'guangzhou', 'w': 'wuhan'}
注意:字典将会按照每个元素的Hashcode值进行排序,而且,字典的“键”是区分大小写的。
2、字典的访问
字典与元组或者列表不同,不是通过索引访问的,而是通过“键”值访问value值的。
格式
value = dictionary_name[key]
例如
#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
#访问'shanghai'
print dict['s']
3、字典元素的添加和修改
在字典中,只需一条赋值语句就实现了字典元素的添加和修改,所不同的是,若增加的元素在字典中不存在就是添加,若已经存在就是修改。
例如
#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
#添加{'c' : 'chongqing'}
dict['c'] = 'chongqing'
print dict
#修改'wuhan'为'wuchang'
dict['w'] = 'wuchang'
print dict
4、字典中的常用方法
- items方法主要用于实现字典的遍历操作,返回的是由若干元组组成的列表。
#coding:UTF-8
#使用items()方法遍历字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
for (k, v) in dict.items():
print 'dict[%s] = ' % k ,v
输出dict[s] = shanghai dict[b] = beijing dict[g] = guangzhou dict[w] = wuhan
- iteritems方法主要是生成遍历器,用于实现字典的遍历,除此之外还有iterkeys()方法和itervalues()方法。
#coding:UTF-8
#使用iteritems()方法遍历字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.iteritems()#构造遍历器
for k, v in dict.iteritems():
print 'dict[%s] = ' % k , v
- setdefault方法用于创建新的元素并设置默认值。
#coding:UTF-8
#设置默认值
dict = {}#空的字典
dict.setdefault('b')#{'b': None}
print dict
dict['b'] = 'beijing'
#已经设置了'b'对应的值,再设置默认将无效
dict.setdefault('b', 'default')
print dict
- pop方法用于删除指定的key处的值。
#coding:UTF-8
#删除操作
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#删除key值为's'处的值
dict.pop('s')
print dict
#coding:UTF-8
#删除操作还有使用内建的方法del()
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#使用del方法
del(dict['s'])
print dict
#coding:UTF-8
#字典的清空使用clear()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#清空
dict.clear()
print dict#空的字典
- get方法用于得到key键处的值。
#coding:UTF-8
#get()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.get('s')#shanghai
- keys方法用于返回字典中的key的列表。
#coding:UTF-8
#keys()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.keys()#['s', 'b', 'g', 'w']
- values方法用于返回字典中的value的列表。
#coding:UTF-8
#values()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.values()#['shanghai', 'beijing', 'guangzhou', 'wuhan']
- update函数主要实现的是将一个字典中的元素增加到另一个字典中。
#coding:UTF-8
#update()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai'}
dict_2 = {'w' : 'wuhan', 'g' : 'guangzhou'}
dict_1.update(dict_2)
print dict_1
注意,若出现dict_2中有dict_1中的键,则会更新。
- sorted排序函数。
#coding:UTF-8
#sorted()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#按照key排序
print sorted(dict.items(), key = lambda d: d[0])
#按照value排序
print sorted(dict.items(), key = lambda d: d[1])
- copy函数实现的是字典的浅拷贝。
#coding:UTF-8
#copy()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
dict_2 = {'c' : 'chongqing'}
dict_2 = dict_1.copy()
print dict_2#{'s': 'shanghai', 'b': 'beijing', 'w': 'wuhan', 'g': 'guangzhou'}
注意:清除了dict_2中原有的元素。浅拷贝是指只拷贝数据不拷贝数据之间的关系,新的数据和旧的数据使用的是同一块内存空间;对应的是深拷贝,既拷贝数据,也拷贝数据之间的关系,新的数据和旧的数据使用的是不同的内存空间。在python中可以使用copy模块来实现对象的深拷贝和浅拷贝,其中的deepcopy()用于深拷贝操作,copy()用于浅拷贝操作。
#coding:UTF-8
#copy模块
import copy
dict_1 = {'a' : 'beijing', 'b' : {'s' : 'shanghai', 'w' : 'wuhan'}}
dict_2 = copy.deepcopy(dict_1)#深拷贝
dict_3 = copy.copy(dict_1)#浅拷贝
dict_2['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shanghai', 'w': 'wuhan'}}
dict_3['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shenyang', 'w': 'wuhan'}}
- 重新整理AUTO_INCREMENT字段
- Spring Cloud Config
- Spring boot with Schedule (启用/禁用)
- DevOps Tools
- Docker 虚拟机之 Redis
- Spring boot with HTTPS SSL
- Spring boot with Git version
- Spring boot with Elasticsearch 5.5.1
- 怎样将 MySQL 数据表导入到 Elasticsearch
- Spring data 数据库建表(一对一,一对多,多对多)
- Apache Sqoop 将mysql导入到Hadoop HDFS
- Redis 4.0.0 一键安装脚本,CentOS 7 systemd 完美启动
- Spring boot with Apache Hive
- Apache Hive 快速入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 程序员最喜欢用的在线代码编译器,什么?你竟然不知道!可以在网页敲代码,运行调试!
- ZOJ 3623 Battle Ships
- POJ 2955 区间DP必看的括号匹配问题,经典例题
- POJ 3211 Washing Clothes
- 1745 Divisibility
- POJ 3616 Milking Time
- C++面向对象编程类对象的定义
- Codeforce 1102 C. Doors Breaking and Repairing
- CodeForces - 1102B Array K-Coloring
- background-size之详解
- a伪类
- CodeForces - 1102A(思维题)
- C++使用指针,动态数组,指针做参数需要注意的问题等总结
- POJ 1170 Shopping Offers非状态压缩做法
- HDU 4283 You Are the One