Python中的Dictionary
Dictionary的创建
1 字面量
>>>D = {'a': 1, 'b': 2}
>>>D
{'b': 2, 'a': 1}
2 keyword参数
>>>D = dict(a = 1, b = 2)
>>>D
{'a': 1, 'b': 2}
3 key/value tuples
>>>D = dict([('a', 1), ('b, 2)]
>>>D
{'a': 1, 'b': 2}
4 dictionary comprehension表达式,但是只在Python 2.7和Python 3.X中支持
>>>D = {x : x **2 for x in [1, 2, 3]}
>>>D
{1: 1, 2: 4, 3: 9}
字典的key是否只能为字符串
不是,字典的keys可以是任何对象,比如,可以是整数,可以是tuple等等
字典在Python 3.X和Python 2.7中的变化
1 Python 3.X中的变化
1) Python 3.X中支持comprehension表达式;
2) Python 3.X中dict.keys,dict.values,dict.items返回dict对象的视图,在Python 2.X中,它们返回的是一个list对象。视图对象是一个iterable对象,它主要有三个特点:第一,视图对象不是list,所以list方法对视图对象无法直接使用;第二,视图对象动态跟踪字典的变化;第三,对于dict.keys来说,返回的视图对象是一个set-like对象,因此可以使用set的方法来进行操作,但是,dict.values返回的不是一个set-like的对象,因此无法使用set的方法来操作,dict.items当且仅当包含唯一的<key, value>对,并且只包含不可变对象,那么它也是set-like的:
>>>D = dict(a = 1, b = 2, c = 3)
>>>D
{'a': 1, 'b': 2, 'c': 3} >>>D.keys()
dict_keys(['a', 'b', 'c']) >>>D.values()
dict_values([1, 2, 3]) >>>D.items()
dict_items([('a', 1), ('b', 2), ('c', 3)]) # 动态跟踪反映字典的内容
>>>del D['b']
>>>D
{'a': 1, 'c': 3} >>>D.keys()
dict_keys(['a', 'c']) >>>D.values()
dict_values([1, 3]) >>>D.items()
dict_items([('a', 1), ('c', 3)]) >>>D.keys() & D.keys() # keys支持set操作
{'a', 'c'} >>>D.values() & D.values() # 报错
TypeError:unsupported operand type(s) for &:'dict_values' and 'dict_values' >>>D.items() & D.items() # 满足items是set-like的条件
{('a', 1), ('c', 3)}
3) 字典之间不再支持直接的大小比较,但是==还是支持的;
>>>A = dict(a = 1, b = 2)
>>>B = dict(c = 3, d = 4)
>>>A < B # 报错
TypeError:unorderalble types:dict() < dict() >>>A == B
False >>>sorted(A.items()) < sorted(B.items()) # 替代直接比较
True
4) has_key方法已经不存在了,这是Python 2.X里面的方法,取而代之的是in方法(Python 2.X中也支持in方法)。
2 Python 2.7中的变化
支持comprehension表达式;
支持keys,values,items的视图对象,但是使用dict.viewKeys,dict.viewValues,dict.viewItems方法
Python中的Dictionary的更多相关文章
- Python 中list, dictionary 与 file相互操作
Python的list,dictionary可以写入file, 也可以从file中读取. 关于list: 1)写入文件 self.existedBlog.write("you ...
- Python中列表,元组,字典,集合的区别
参考文档https://blog.csdn.net/Yeoman92/article/details/56289287 理解Python中列表,元组,字典,集合的区别 列表,元组,字典,集合的区别是p ...
- 如何将python中的List转化成dictionary
问题1:如何将一个list转化成一个dictionary? 问题描述:比如在python中我有一个如下的list,其中奇数位置对应字典的key,偶数位置为相应的value list : ['品牌', ...
- python中的list、tuple和dictionary
列表 列表是python中最基本的数据结构之一,并且列表的数据项不需要具有相同的数据类型,创建一个列表,只需把逗号分隔的不同数据项使用方括号括起来即可.具体的定义式如下: list=['变量1','变 ...
- python2.7高级编程 笔记二(Python中的描述符)
Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...
- [转载]python中的sys模块(二)
#!/usr/bin/python # Filename: using_sys.py import sys print 'The command line arguments are:' for i ...
- Python中的几种数据类型
大体上把Python中的数据类型分为如下几类: Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"hello" ...
- python中的变量和数据类型
一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...
- 在python中处理XML
XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下: <data> <country name="Liechtenstein"> < ...
随机推荐
- MAMP:MySQL wasn't able to start
MAMP 我点击start server的时候 发现mysql服务器打不开 http://images.cnblogs.com/cnblogs_com/lwwen/1231721/o_11111111 ...
- Java中枚举的相关应用
package example6; import org.junit.Test;/*1.什么是枚举? * 需要在颐堤港范围内取值,这个值只能是这个范围内的一个 * 使用枚举关键字enum * 枚举里也 ...
- H5新增的标签以及改良的标签
1>OL标签的改良 start type reversed:翻转排序 2>datalist标签自动补全的使用 3>progress标签的使用:进度条 4>meter标签的应用 ...
- python__基础 : 多继承中方法的调用顺序 __mro__方法
在多继承中,如果一个子类继承了两个平级的父类,而这两个父类有两个相同名字的方法,那么一般先继承谁,调用方法就调用先继承的那个父类的方法.如: class A: def test(self): prin ...
- PHP的高效率写法
1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非静态方法的 ...
- C#/STM32 WAV转byte WAV数据格式
最近在做STM32音乐播放器,选取了最容易做的WAV格式. 为了更方便开发自己做了一个WAV转Byte的小上位机 附软件下载链接 链接:https://pan.baidu.com/s/1Zz7bczZ ...
- go学习笔记-标准库
标准库 名称 摘要 archive tar tar包实现了tar格式压缩文件的存取. zip zip包提供了zip档案文件的读写服务. bufio bufio 包实现了带缓存的I/O操作. built ...
- Java基础—ArrayList源码浅析
注:以下源码均为JDK8的源码 一. 核心属性 基本属性如下: 核心的属性其实是红框中的两个: //从注释也容易看出,一个是集合元素,一个是集合长度(注意是逻辑长度,即元素的个数,而非数组长度) 其中 ...
- Java编辑环境搭建
1.Java开发环境搭建 这里主要说的是在Windows系统下的环境搭建 JDK的安装 java的sdk简称JDK ,去其官方网站下载最近的JDK即可http://www.oracle.com/tec ...
- tarjan算法求最近公共祖先
tarjian算法 LCA: LCA(Least Common Ancestor),顾名思义,是指在一棵树中,距离两个点最近的两者的公共节点.也就是说,在两个点通往根的道路上,肯定会有公共的节点,我们 ...