1.Python 字典(Dictionary)

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

1.1创建字典

示例1

d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩" }

1.2访问字典里的值

示例2:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/12 22:17
# @Author  : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]

print "输出 寒冰射手 的名字",  d["寒冰射手"] # 没有对应的值抛出异常

示例2 运行结果

输出 德玛西亚之力 的名字: 盖伦
Traceback (most recent call last):
输出 寒冰射手 的名字
  File "E:/python/hello/untitled3/dictionary.py", line 9, in <module>
    print "输出 寒冰射手 的名字",  d["寒冰射手"] # 没有对应的值抛出异常
KeyError: '\xe5\xaf\x92\xe5\x86\xb0\xe5\xb0\x84\xe6\x89\x8b'

注意:如果字典没有对应的key值则会抛出异常,如上例运行结果

1.3字典添加元素

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对

示例3

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/12 22:17
# @Author  : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]
d["寒冰射手"] = "艾希"  # 添加新数据
print "输出 寒冰射手 的名字",  d["寒冰射手"] # 没有对应的值抛出异常

示例3 运行如下

输出 德玛西亚之力 的名字: 盖伦
输出 寒冰射手 的名字 艾希

1.4删除字典元素

示例4:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/12 22:17
# @Author  : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]
d["寒冰射手"] = "艾希"  # 添加新数据
print "输出 寒冰射手 的名字",  d["寒冰射手"]

del d["寒冰射手"]  # 删除该值
print "删除后 输出 寒冰射手 的名字",  d["寒冰射手"] # 没有对应的值抛出异常

示例4 运行结果

输出 德玛西亚之力 的名字: 盖伦
Traceback (most recent call last):
输出 寒冰射手 的名字 艾希
  File "E:/python/hello/untitled3/dictionary.py", line 12, in <module>
删除后 输出 寒冰射手 的名字
    print "删除后 输出 寒冰射手 的名字",  d["寒冰射手"] # 没有对应的值抛出异常
KeyError: '\xe5\xaf\x92\xe5\x86\xb0\xe5\xb0\x84\xe6\x89\x8b'

2.字典键的特性

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

示例 5

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/12 22:17
# @Author  : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]
d["寒冰射手"] = "艾希"  # 添加新数据
print "输出 寒冰射手 的名字",  d["寒冰射手"]
d["寒冰射手"] = "凯瑟琳"  # 修改数据
print "修改后 输出 寒冰射手 的名字",  d["寒冰射手"] # 没有对应的值抛出异常

示例 5 运行结果

输出 德玛西亚之力 的名字: 盖伦
输出 寒冰射手 的名字 艾希
修改后 输出 寒冰射手 的名字 凯瑟琳

2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行

示例6

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/12 22:17
# @Author  : wwyx
name = {("暗夜猎手", "薇恩"): 2, 2: "薇恩"}
print "输出 元组为('暗夜猎手', '薇恩') 的名字:", name[("暗夜猎手", "薇恩")]

示例 6 运行结果

输出 元组为('暗夜猎手', '薇恩') 的名字: 2

字典内置函数&方法

Python字典包含了以下内置函数:

序号 函数及描述
1 cmp(dict1, dict2)
比较两个字典元素。
2 len(dict)
计算字典元素个数,即键的总数。
3 str(dict)
输出字典可打印的字符串表示。
4 type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。

Python字典包含了以下内置方法:

序号 函数及描述
1 radiansdict.clear()
删除字典内所有元素
2 radiansdict.copy()
返回一个字典的浅复制
3 radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 radiansdict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
5 radiansdict.has_key(key)
如果键在字典dict里返回true,否则返回false
6 radiansdict.items()
以列表返回可遍历的(键, 值) 元组数组
7 radiansdict.keys()
以列表返回一个字典所有的键
8 radiansdict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 radiansdict.update(dict2)
把字典dict2的键/值对更新到dict里
10 radiansdict.values()
以列表返回字典中的所有值

python之最强王者(8)——字典(dictionary)的更多相关文章

  1. python之最强王者(3)——变量,条件、循环语句

    1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ...

  2. python之最强王者(7)——元组(tuple)

    1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...

  3. python之最强王者(1)——python入门简介

    1.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Pe ...

  4. python之最强王者(9)——函数

    1.Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...

  5. python之最强王者(11)——异常(exception)

    1.Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. ...

  6. python之最强王者(10)———文件(File)、输入输出的基本操作

    1. Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 2.打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式. ...

  7. python之最强王者(6)——列表(List)

    1.Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置 ...

  8. python之最强王者(5)——Nunber(数字)

    1.Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量 ...

  9. python之最强王者(4)——字符串

    1.Python 中文编码 前面章节中我们已经学会了如何用 Python 输出 "Hello, World!",英文没有问题,但是如果你输出中文字符"你好,世界" ...

随机推荐

  1. python之最强王者(9)——函数

    1.Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...

  2. DevOps对于企业IT的价值

    其实从敏捷延展开的 DevOps 概念很早就已经被提出,不过由于配套的技术成熟度水平层次不齐, DevOps 的价值一直没有有效地发挥出来.现如今,随着容器技术的发展, DevOps 在企业中的实践难 ...

  3. 【微信SEO】公众号也能做排名?

    [写于2016年8月] 最近,微信团队发出一则公告,开放公众号运营者一年内更改公众号名一次,这对不少名字起的奇葩名字(包括dkplus)的公众号来说是一件好事. 为什么说是好事呢?公众号名字直接关联到 ...

  4. 搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】

    前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知 ...

  5. Linux下部署ASP.NET服务连接oracle遇到的问题记录

    一.如何卸载MONO Q:mono是linux系统上跨平台软件,卸载它有两种方式: 1.知道mono安装路径,安装原来的路径直接覆盖安装(最为简单): 2.不知道mono安装路径,首先通过sudo f ...

  6. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...

  7. 2016年我们重新思考移动互联网创业的风险, 微信还是APP?

    感觉这两年前端开发又火起来了,很多做内容创业和做微电商创业的人,往往都选择了运营微信号.对于做纯技术开发的人来说,一般是看不上微信号的,感觉没什么技术含量,或者说没什么技术壁垒.也有另一批人观点相反的 ...

  8. ABP(现代ASP.NET样板开发框架)系列之4、ABP模块系统

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之4.ABP模块系统 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  9. JS入门

    1,undefined,NaN,Null,infinity 1) undefined 是undefined 类型 var a; //声明变量后不赋值 typeof 类型判断方法 console.log ...

  10. 常用的Webpack配置

    官方文档: http://webpack.github.io/docs/ 1. 安装python2. 安装node.js msi3. npm自动打包在最新的node.js安装包里 被封的包用国内镜像下 ...