字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

1、字典的定义

dict1 = {'Alice': '', 'Beth': '', 'Cecil': ''}
dict2 = {'abc': 456};
dict3 = {'abc': 123, 10: 20};
dict4 = {} #定义空字典
dict5 = dict() #定义空字典

2、字典的访问

  字典的索引就是字典的键值

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age']; #运行结果
dict['Name']: Zara
dict['Age']: 7

3、修改字典条目

  键值存在则更改原Value值,键值不存在则增加新的键值对

dict = {"one": 1, "two": 2, "three": 3, };

dict['one'] = 100;  # 如存在,则更新存在的条目
dict['four'] = 4; # 如不存在则添加新条目 print "dict['one']: ", dict['one'];
print "dict['four']: ", dict['four'];
print dict #运行结果
dict['one']: 100
dict['four']: 4
{'four': 4, 'three': 3, 'two': 2, 'one': 100}

4、删除字典

  删除包括:删除单个元素、删除所有元素、删除整个字典

dict = {"one": 1, "two": 2, "three": 3,};

del dict['one'];  # 删除键是'Name'的条目
print dict
dict.clear(); # 清空词典所有条目
print dict
del dict; # 删除词典
# print dict #此句会报TypeErro错,应为字典已经不存在了 #运行结果
{'three': 3, 'two': 2}
{}

5、字典的常用方法

1、 dict.clear() #删除字典内所有元素

dict = {'Name': 'yang', "age": 20}
print dict
dict.clear()
print dict #running result
{'age': 20, 'Name': 'yang'}
{}

2、 dict.copy() #返回一个字典的浅复制

3、 dict.fromkeys(seq[, val]) #创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print "New Dictionary : %s" % str(dict) dict = dict.fromkeys(seq, 10)
print "New Dictionary : %s" % str(dict) #运行结果
New Dictionary : {'age': None, 'name': None, 'sex': None}
New Dictionary : {'age': 10, 'name': 10, 'sex': 10}

4、 dict.get(key, default=None) #返回指定键的值,如果值不在字典中返回default值

dict = {'Name': 'yang', 'Age': 27}

print "Value : %s" %  dict.get('Age')  # 有则返回Value值
print "Value : %s" % dict.get('Sex', "Never") # 没有则返回给定的Value值
print "Value : %s" % dict.get('Sex') # 没有给定Value 返回NONE #运行结果
Value : 27
Value : Never
Value : None

5、 dict.has_key(key) #如果键在字典dict里返回true,否则返回false

dict = {'Name': 'yang', 'Age': 27}

print "Value : %s" %  dict.has_key('Age')
print "Value : %s" % dict.has_key('Sex') #运行结果
Value : True
Value : False

6、 dict.items() #以列表返回可遍历的(键, 值) 元组数组
  dict.iteritems(self) #生成一个包含所有键值对的可迭代对象
  dict.viewitems(self) # 功能和iteritems类似,但是能体现出变化的值

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}

print "字典值 : %s" % dict.items()

# 遍历字典列表
for key, values in dict.items():
print key, values # 遍历可迭代的对象 iteritems实现
for key, values in dict.iteritems():
print key, values # 遍历可迭代的对象 viewitems实现
for key, values in dict.viewitems():
print key, values #运行结果
字典值 : [('aaa', 'www.aaa.com'), ('bbb', 'www.bbb.com'), ('ccc', 'www.ccc.com')]
aaa www.aaa.com
bbb www.bbb.com
ccc www.ccc.com
aaa www.aaa.com
bbb www.bbb.com
ccc www.ccc.com
aaa www.aaa.com
bbb www.bbb.com
ccc www.ccc.com

7、 dict.keys() #以列表返回一个字典所有的键
  dict.iterkeys(self) #返回一个包含所有键的可迭代对象
  dict.viewkeys(self) # 功能和iterkeys类似,但是能体现出变化的值

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}

print "键 : %s" % dict.keys()

# 遍历字典列表
for key in dict.keys():
print ("dict.keys(): %s" % key) # 遍历可迭代的对象 iteritems实现
for key in dict.iterkeys():
print ("dict.iterkeys(): %s" % key) # 遍历可迭代的对象 viewitems实现
for key in dict.viewkeys():
print ("dict.viewkeys(): %s" % key) #运行结果
键 : ['aaa', 'bbb', 'ccc']
dict.keys(): aaa
dict.keys(): bbb
dict.keys(): ccc
dict.iterkeys(): aaa
dict.iterkeys(): bbb
dict.iterkeys(): ccc
dict.viewkeys(): aaa
dict.viewkeys(): bbb
dict.viewkeys(): ccc

8、 dict.values() #以列表返回字典中的所有值
  dict.itervalues(self) 返回一个包含所有Value的可迭代对象
  dict.viewvalues(self) # 功能和itervalues类似,但是能体现出变化的值

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}

print "Value值 : %s" % dict.values()

# 遍历字典列表
for value in dict.values():
print ("dict.values(): %s" % value) # 遍历可迭代的对象 iteritems实现
for value in dict.itervalues():
print ("dict.itervalues(): %s" % value) # 遍历可迭代的对象 viewitems实现
for value in dict.viewvalues():
print ("dict.viewvalues(): %s" % value) #运行结果
Value值 : ['www.aaa.com', 'www.bbb.com', 'www.ccc.com']
dict.values(): www.aaa.com
dict.values(): www.bbb.com
dict.values(): www.ccc.com
dict.itervalues(): www.aaa.com
dict.itervalues(): www.bbb.com
dict.itervalues(): www.ccc.com
dict.viewvalues(): www.aaa.com
dict.viewvalues(): www.bbb.com
dict.viewvalues(): www.ccc.com

9、 dict.setdefault(key, default=None) #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

#!/usr/bin/env python
# -*- coding:utf-8 -*-
dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
a = dict.setdefault("aaa") # 有该键则返回Value值
b = dict.setdefault("ddd","www.ddd.com") #没有该键 则在字典中添加,并返回给定的值
print a, b
print dict #运行结果
www.aaa.com www.ddd.com
{'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}

10、dict.update(dict2) #把字典dict2的键/值对更新到dict里

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
dict2 = {100:100}
dict.update({"ddd":"www.ddd.com"})
print dict
dict.update(dict2)
print dict #运行结果
{'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}
{100: 100, 'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}

11、dict.pop(key[,default]) #删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
print dict.pop("aaa") # 如果键存在,则在字典中删除对应键值对,并返回Value值
print dict.pop("ddd", "www.ddd.com") #如果键不存在,则返回给定的默认Value值
print dict # 运行结果
www.aaa.com
www.ddd.com
{'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}

12、dict.popitem() 随机返回并删除字典中的一对键和值。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
a = dict.popitem() print a # 随机删除的键值对
print dict # 打印随机删除一个键值对后的字典 #运行结果
('aaa', 'www.aaa.com')
{'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}

6.字典的内置函数

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

Python 基础数据类型之dict的更多相关文章

  1. Python基础数据类型(五) dict字典

    字典dict{} 字典数字自动排序 enumerate 枚举 for i,k in enumerate(dic,1) #第二个参数默认不写就是0 ---枚举 print(i,k) dict,以{}来表 ...

  2. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  3. Python 入门之Python基础数据类型及其方法

    Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...

  4. 图解python | 基础数据类型

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  5. python基础数据类型1

    python基础数据类型1 part1: ''' ''': 三个单引号用于换行的字符串 字符串可以相加(拼接)相乘(重复) 在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代 ...

  6. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  7. Python基础数据类型-列表(list)和元组(tuple)和集合(set)

    Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...

  8. Python基础数据类型-字符串(string)

    Python基础数据类型-字符串(string) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版 ...

  9. python基础数据类型考试题

    Python基础数据类型考试题 考试时间:两个半小时                      满分100分(80分以上包含80分及格) 一,基础题. 1,简述变量命名规范(3分) 2,字节和位的关系 ...

随机推荐

  1. 基于Boost库的HTTP Post函数

    两个函数的区别: 提交表单数据和提交文本数据 表单数据: request_stream << "Content-Type: application/x-www-form-urle ...

  2. QQ快速登录协议分析以及风险反思

    前言 众所周知,Tencent以前使用Activex的方式实施QQ快速登录,现在快速登录已经不用控件了.那现在用了什么奇葩的方法做到Web和本地的应用程序交互呢?其实猜测一下,Web和本地应用进行交互 ...

  3. Configuration Section Designer for VS2017

    Configuration Section Designer是在Visual Studio中设计符合.Net配置体系配置文件和代码的神器.然而,它的源码已经很久不维护了.现在在新的VS2017中无法使 ...

  4. c++日志记录模块

    C++ 日志记录模块 该模块从实际项目中产生,通过extern声明的方式,可在代码不同模块中生成日志,日志文件名称为随机码加用户指定名称,采用随机码是为了避免日志文件可能被覆盖的问题. 愿意的话你也能 ...

  5. Deferred Shading 延迟着色(翻译)

    原文地址:https://en.wikipedia.org/wiki/Deferred_shading 在3D计算机图形学领域,deferred shading 是一种屏幕空间着色技术.它被称为Def ...

  6. 微软职位内部推荐-Software Engineer-Sharepoint

    微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...

  7. Notes of Daily Scrum Meeting(12.19)

    今天工作进展的速度别昨天稍有提高,希望大家再接再厉!加油! 团队任务总结如下: 团队成员 今日团队工作 陈少杰 重新尝试使用get等方法进行网络连接的调试 王迪 调试搜索功能中测出的问题 金鑫 测试已 ...

  8. SCRUM 12.03

    第二轮迭代从今天起正式开始了.12月3日,我们举行了一次组会. 第一轮迭代结束时,我们意识到第二轮迭代需要实现的功能主要如下: 在下次迭代的时候实现对多个网站的信息进行比较取最优惠的选择,目前我们劲针 ...

  9. Daily Scrumming* 2015.12.12(Day 4)

    一.团队scrum meeting照片 二.今日总结 姓名 WorkItem ID 工作内容 签入链接以及备注说明  江昊 任务1036 进行界面开发,明日准备开发第一个界面,社团展示界面 工作暂未完 ...

  10. APP相关问题汇总

    APP试用过程中,我们的APP存在不少的问题,下面是一些试用者和我们自己发现的一些问题以及一些建议. 1.APP界面有些老气,界面之间过渡僵硬 2.在试用中会出现闪退情况 3.由于我们使用的是绝对布局 ...