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的更多相关文章

  1. Python 中list, dictionary 与 file相互操作

    Python的list,dictionary可以写入file, 也可以从file中读取. 关于list: 1)写入文件         self.existedBlog.write("you ...

  2. Python中列表,元组,字典,集合的区别

    参考文档https://blog.csdn.net/Yeoman92/article/details/56289287 理解Python中列表,元组,字典,集合的区别 列表,元组,字典,集合的区别是p ...

  3. 如何将python中的List转化成dictionary

    问题1:如何将一个list转化成一个dictionary? 问题描述:比如在python中我有一个如下的list,其中奇数位置对应字典的key,偶数位置为相应的value list : ['品牌', ...

  4. python中的list、tuple和dictionary

    列表 列表是python中最基本的数据结构之一,并且列表的数据项不需要具有相同的数据类型,创建一个列表,只需把逗号分隔的不同数据项使用方括号括起来即可.具体的定义式如下: list=['变量1','变 ...

  5. python2.7高级编程 笔记二(Python中的描述符)

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...

  6. [转载]python中的sys模块(二)

    #!/usr/bin/python # Filename: using_sys.py import sys print 'The command line arguments are:' for i ...

  7. Python中的几种数据类型

    大体上把Python中的数据类型分为如下几类:   Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"hello" ...

  8. python中的变量和数据类型

    一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...

  9. 在python中处理XML

    XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下: <data> <country name="Liechtenstein"> < ...

随机推荐

  1. 设计四个线程,其中两个线程每次对j增加1,另外两个线程对j每次减1,写出程序

    /* * 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1.写出程序. */ public class ThreadTest { private int j; public sta ...

  2. mysql 8.0.12安装步骤

    首先从官网下载压缩包: 解压压缩包到指定目录,在目录下新建my.ini,配置内容如下; [mysqld]  # 设置3306端口  port=3306  # 设置mysql的安装目录  basedir ...

  3. 配置SpringBoot方便的切换jar和war

    配置SpringBoot方便的切换jar和war 网上关于如何切换,其实说的很明确,本文主要通过profile进行快速切换已实现在不同场合下,用不同的打包方式. jar到war修改步骤 pom文件修改 ...

  4. ueditor 富文本编辑器 Uncaught TypeError: Cannot set property 'innerHTML' of undefined问题

    ueditor.addListener("ready", function () { ueditor.setContent(‘内容'); });

  5. 大数据学习--day08(hnapp 后台系统开发、面向对象)

    hnapp 后台系统开发.面向对象 利用前面所学的知识,写一个控制台登陆注册后台界面 package sy180918.hnapp.array; import java.util.Arrays; im ...

  6. Hadoop核心架构(1)

    在大数据的发展过程中,出现了一批专门应用与大数据的处理分析工具,如Hadoop,Hbase,Hive,Spark等,我们先从最基础的Hadoop开始进行介绍 Hadoop是apache基金会下所开发的 ...

  7. 令人懊恼的阉割版fabric sdk功能缺失

    按理说,fabric本身都是用golang开发的,那么fabric-sdk-go作为其亲儿子,功能应该是最为完善的.然而,与我们想法相左的是,golang版本的sdk反而是最不完备的,开发进度滞后,功 ...

  8. [AGC011F] Train Service Planning [线段树优化dp+思维]

    思路 模意义 这题真tm有意思 我上下楼梯了半天做出来的qwq 首先,考虑到每K分钟有一辆车,那么可以把所有的操作都放到模$K$意义下进行 这时,我们只需要考虑两边的两辆车就好了. 定义一些称呼: 上 ...

  9. java nio之Buffer

    一.JAVA NIO 是在和channel交互的时候使用的.Channel将数据读入缓冲区,然后我们又从缓冲区访问数据.写数据时,首先将要发送的数据按顺序填入缓冲区.基本上,缓冲区只是一个列表,它的所 ...

  10. typescript语法

    先来讲一讲TypeScript出现的背景 前端javascript的编程思想与后端java面向对象的编程思想有很大的不同,微软公司借鉴了coffeescript语言,继承了很多C#和java的编程思想 ...