python学习(四) 字典:当索引不好用时
第四章 字典:当索引不好用时
4.1 字典的使用
字典的适用场景:
表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组;
存储文件修改时间,用文件名作为键;
数字电话/地址簿
4.2 创建和使用字典
如下的“键-值”对就是字典
>>> phonebook = {'alice':'2341', 'beth':'9876'}
>>> phonebook['alice']
'2341'
4.2.1 dict函数
可以用dict函数,通过其他映射或键-值对的序列建立字典。
>>> items = [('name','gumby'),('age',42)]
>>> d = dict(items)
>>> d['name']
'gumby'
>>> d
{'name': 'gumby', 'age': 42}
也可以通过关键字参数来创建字典:
>>> d = dict(name='gumby', age = 42)
>>> d
{'name': 'gumby', 'age': 42}
4.2.2 基本字典操作
>>> len(d)           // 字典长度
2
>>> d["name"]     // 取得键对应的值
'gumby'
>>> d["name"] = "aaaa"  // 赋值
>>> d
{'name': 'aaaa', 'age': 42}
>>> del d["name"]         // 删除
>>> d
{'age': 42}
>>> "name"  in d           // 检查键是否在字典中
False
键类型:字典的键不一定为整型数据,可以是任意的不可变类型,比如浮点数,字符串或者元组。
自动添加:即使键起初不在字典中,也可以为他赋值,这样字典就会建立新项。
>>> x = []                              //  不合法,因为这是一个列表
>>> x[42] = 5
Traceback (most recent call last):
  File "<pyshell#147>", line 1, in <module>
    x[42] = 5
IndexError: list assignment index out of range
>>> x = {}                               // 合法,这是一个映射
>>> x[42] = "fsd"
>>> x
{42: 'fsd'}
注意: ( ) - 元组
[ ] - 序列
{ } - 字典
4.2.3 字典的格式化字符串
>>> var = {"beth":'9102', "cecil":'3258'}
>>> "%(cecil)s"   %   var            // 可以用键
'3258'
4.2.4 字典的方法
1)clear
清楚字典的所有项,原地操作,无返回值
>>> var
{'beth': '9102', 'cecil': '3258'}
>>> var.clear()
>>> var
{}            // 空字典
2)copy 返回相同键-值对的新字典(这个方法是浅复制)
>>> x = {'username':'admin','machines':['foo','bar','baz']}
>>> x
{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y = x.copy()
>>> y['username'] ='newname'              // 替换某个值,原始字典不受影响
>>> y['machines'].remove('bar')            // 如果修改了某个值(原地修改,而不是替换),原始字典也会改变,
>>> y
{'username': 'newname', 'machines': ['foo', 'baz']}   
>>> x
{'username': 'admin', 'machines': ['foo', 'baz']}
避免上述浅复制问题的方案是,使用深复制deepcopy
3)fromkeys:用给定的键建立新字典,每个键对应的值是NONE
>>> {}.fromkeys(['name','age'])
{'name': None, 'age': None}
>>> dict.fromkeys(['name','age'],'(unknown)')         
{'name': '(unknown)', 'age': '(unknown)'}
4)get
>>> d = {}
>>> d["anem"]             // 这种方式访问不存在的键会抛出异常
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    d["anem"]
KeyError: 'anem'
>>> d.get("fsd")         // get不会抛出异常,当访问不存在的键的时候
>>>
5) has_key : python 3不支持
6) items 和iteritems
7) keys和iterkeys
8)pop: 得到给定的键的值,并删除
>>> d
{'anme': 'fds'}
>>> d.pop('anme')
'fds'
>>> d
{}
9) popitem:弹出随机的项(用于一个一个移除并处理)
10) setdefault: 如果键存在,返回对应的值;如果不存在,则返默认值并更新。
>>> d
{}
>>> d.setdefault('name',"jj")
'jj'
>>> d
{'name': 'jj'}
11) update: 利用一个字典项更新另外一个字典。 提供的项会被添加到旧的字典中,如果键存在,就覆盖。
python学习(四) 字典:当索引不好用时的更多相关文章
- 字典:当索引不好用时2 - 零基础入门学习Python026
		
字典:当索引不好用时2 让编程改变世界 Change the world by program 上节课我们学习到在一些情况下,比序列更实用的映射类型:字典.我们知道字典也有个关键符号就是大括号(也叫花 ...
 - 字典:当索引不好用时 - 零基础入门学习Python025
		
字典:当索引不好用时 让编程改变世界 Change the world by program 有天你想翻开牛津字典,查找"sadomasochism[ˌseɪdoʊ'mæsəkɪzəm]&q ...
 - 【python学习笔记】4.字典:当索引不好用时
		
[python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...
 - 零基础入门学习Python(25)--字典:当索引不好用时
		
知识点 字典属于映射类型. 列表,元祖,字符串等属于序列类型 创建及访问字典 #创建一个字典 >>> dict1 = {'李宁':'一切皆有可能','耐克':'Just do it' ...
 - 零基础入门学习Python(26)--字典:当索引不好用时2
		
知识点 删除字典元素 能删单一的元素也能清空字典,清空只需一项操作. 显示删除一个字典用del命令,如下: >>> dict1 = {'a':1,'b':2,'c':3} >& ...
 - python学习笔记之三:字典,当索引不好用时
		
字典是python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里.键可以是数字,字符串甚至是元组. 1. 创建和使用字典 字典可以通过下面的方式创建: phon ...
 - Python—字典(当索引不好用时)
		
一.定义与概念 1.字典是针对非序列集合而提供的一种数据类型 举例:检索学生信息. “<键><值>对”. 键(即身份证号码) 值(即学生信息). “键值对”例子 姓名和电话号码 ...
 - Python基础--字典:当索引不好用时
		
当列表或是元组的索引不能达到我们的目的时,我们想到了还有一种序列,即字典. 创建 字典 由多个键以及相应的值构成的键-值对组成. 键唯一.值能够不唯一 phonebook = {'xidada':'1 ...
 - Python学习07——字典(2)
		
笨办法学Python第40节,上次用的第三版的书,这次是第四版的书. 这一节的代码如下: cities = {'CA':'San Francisco', 'MI':'Detroit', 'FL':'J ...
 
随机推荐
- JSON Web Token (JWT) 简介
			
JSON Web Token (JWT) 是一种基于 token 的认证方案. JSON Web Token 的结构 一个 JWT token 看起来是这样的: eyJhbGciOiJIUzI1NiI ...
 - HTML5 ——web audio API 音乐可视化(一)
			
使用Web Audio API可以对音频进行分析和操作,最终实现一个音频可视化程序. 最终效果请戳这里; 完整版代码请戳这里,如果还看得过眼,请给一个start⭐ 一.API AudioContext ...
 - node基础(一)——http模块
			
一.http模块 http.createSverver() http是node自带的模块,通过require("http")的方法载入: 使用http创建服务器: http.cre ...
 - ImageView显示网络上的图片
			
ImageView显示网络上的图片 一.简介 二.方法 1)ImageView显示网络上的图片方法 第一步:从网络上下载图片 byte[] byteArr = downImage();//这个是自己写 ...
 - xcrun: error: active developer path (/Users/XJW/Desktop/Xcode.app/Contents/Developer) does not exist, use `xcode-select --switch path/to/Xcode.app` to
			
问题: 装了双xcode 删掉低版本 (注意:低版本xcode 开启过项目 ) 创建git时报错 解决方法: sudo xcode-select -switch /Applications ...
 - 更新增加一个门店ID字段的值
			
MYSQL因为不能查询一张表时同时更新一张表,同时又会有子查询大于等于一条的情况出现. 分两种情况: 1 直接JOIN 得到一张表. 然后导出做筛选 CREATE TABLE TEST SELECT ...
 - 照相、从相册上取照片、播放音频、播放本地视频、播放网络视频、MPMoviePlayerController
			
一.照相.从相册上去照片 1. 先判断是否支持照相功能 *判断当前设备是否支持照相功能,支持返回YES 否则返回NO 注意:模拟器不支持照相功能 把握一个原则只要是物理硬件相关的功能模拟器都不支持 例 ...
 - react-webpack(二)
			
const path = require('path'); const webpack = require('webpack'); const HtmlWebpackPlugin = require( ...
 - windows10 配置apache+php+mysql
			
apache配置就是个坑!!! 参考win10环境下配置win10Apache+PHP+MySQL环境的方法 注意:把所有"C:/apache2/..."都变为自己的apache目 ...
 - 使用Oracle 11g新特性 Active Database Duplication 搭建Dataguard环境
			
Duplication Database 介绍 Duplicate database可以按照用途分为2种: duplicate database(复制出一个数据库) duplicate standby ...