【Python之旅】第二篇(四):字典

说明:

显然Python中字典的学习过程与列表是一样的,主要是围绕下面的函数来进行重点学习:

>>> xpleaf.
xpleaf.clear(
xpleaf.copy(
xpleaf.get(
xpleaf.has_key(
xpleaf.items(
xpleaf.keys(
xpleaf.pop(
xpleaf.popitem(
xpleaf.setdefault(
xpleaf.update(


1.基本操作

--创建一个字典

>>> xpleaf = {
...         ‘name‘:‘xpleaf‘,
...         ‘occupation‘:‘student‘,
...         ‘hobby‘:‘computer‘,
...         ‘dream‘:‘excellent hacker‘
... }
>>> xpleaf
{‘hobby‘: ‘computer‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}

·容易观察到字典的输出并没有按照创建字典时的顺序进行输出,因为字典按哈希值查找内容,而不是按索引号;

·{key:value}是字典的基本语法格式,key是唯一的,value可为大多数数据类型;

--查看键值对应的内容

>>> xpleaf[‘hobby‘]
‘computer‘

--修改键值对应的内容

>>> xpleaf[‘hobby‘] = ‘IT‘
>>> xpleaf
{‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}

--添加一个键值对

>>> xpleaf[‘girlfriend‘] = ‘none‘
>>> xpleaf
{‘girlfriend‘: ‘none‘, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}

·添加的元素在字典中的排序是随机的,因为索引号对字典没有意义(按照哈希值进行value值的查找);



2.has_key()函数

·功能:接受key的查询,以bool值形式返回查询字典中是否有该key;

·演示如下:

>>> xpleaf.has_key(‘dream‘)
True
>>> xpleaf.has_key(‘wife‘)
False


3.items()函数

·功能:将字典转换为列表,列表的元素为元组,其中左元素为key,右元素为value;

·演示如下:

>>> xpleaf.items()
[(‘girlfriend‘, ‘none‘), (‘hobby‘, ‘IT‘), (‘dream‘, ‘excellent hacker‘), (‘name‘, ‘xpleaf‘), (‘occupation‘, ‘student‘)]

·基于上述输出形式,可对字典的key和value进行遍历,如下:

>>> for key,value in xpleaf.items():
...   print key,value
... 
girlfriend none
hobby IT
dream excellent hacker
name xpleaf
occupation student

·item()函数的原理是把字典转换为列表存储在内存中,对于数据量大的情况下,会比较慢;

·大数据量的字典遍历方法:

>>> for key in xpleaf:
...   print key,xpleaf[key]
... 
girlfriend none
hobby IT
dream excellent hacker
name xpleaf
occupation student


4.get()函数

·功能:取对应key的value值;

·演示如下:

>>> xpleaf
{‘girlfriend‘: ‘none‘, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}
>>> xpleaf.get(‘dream‘)
‘excellent hacker‘
>>> xpleaf.get(‘wife‘)    ===>如果没有该key值则不会有输出
>>>

·即相当于dict[key]的方法取value值;



5.keys()函数

·功能:取出字典中的key值,并生成相应的列表;

·演示如下:

>>> xpleaf.keys()
[‘girlfriend‘, ‘hobby‘, ‘dream‘, ‘name‘, ‘occupation‘]


5.pop()函数

·功能:弹出一个key,即删除一个键值对;

·演示如下:

>>> xpleaf
{‘girlfriend‘: ‘none‘, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}
>>> xpleaf.pop(‘girlfriend‘)
‘none‘
>>> xpleaf
{‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}


6.popitem()函数

·功能:按顺序删除字典中的元素;

·演示如下:

>>> a
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘e‘: 5, ‘d‘: 4, 6: ‘f‘}
>>> a.popitem()
(‘a‘, 1)
>>> a.popitem()
(‘c‘, 3)
>>> a.popitem()
(‘b‘, 2)
>>> a.popitem()
(‘e‘, 5)
>>> a.popitem()
(‘d‘, 4)
>>> a.popitem()
(6, ‘f‘)


7.setdefault()函数

·在字典中添加元素,如果原来存在该元素,则不进行任何修改;

·演示如下:

>>> xpleaf
{‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}
>>> xpleaf.setdefault(‘hobby‘,‘computer‘)    ===>‘hobby‘键值对已经存在,不会添加
‘IT‘
>>> xpleaf
{‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘name‘: ‘xpleaf‘, ‘occupation‘: ‘student‘}
>>> xpleaf.setdefault(‘weight‘,‘55kg‘)    ===>‘weight‘键值对不存在,会进行添加
‘55kg‘
>>> xpleaf
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf.setdefault(‘wife‘)    ===>添加没有的键值对,
>>> xpleaf
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: None, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}


8.update()函数

·功能:合并两个字典

·演示如下:

>>> a
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2}
>>> b
{‘e‘: 4, ‘g‘: 6, ‘f‘: 5}
>>> a.update(b)
>>> a
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘e‘: 4, ‘g‘: 6, ‘f‘: 5}
>>> b
{‘e‘: 4, ‘g‘: 6, ‘f‘: 5}

·合并的顺序依然是随机的,原理与前面一样;

·更新的只是字典a,字典b没有变化;

·如果合并字典时有重复的item项,则会进行覆盖:

>>> a
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘e‘: 4, ‘g‘: 6, ‘f‘: 5}
>>> c
{‘b‘: ‘cover2‘, ‘g‘: ‘cover1‘}
>>> a.update(c)
>>> a
{‘a‘: 1, ‘c‘: 3, ‘b‘: ‘cover2‘, ‘e‘: 4, ‘g‘: ‘cover1‘, ‘f‘: 5}


9.values()函数

·功能:取字典中所有key的value值,并生成相应的列表

·演示如下:

>>> xpleaf
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: None, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf.values()
[‘xpleaf‘, ‘55kg‘, None, ‘IT‘, ‘excellent hacker‘, ‘student‘]

·多用在value值的数据类型都相同的字典中,以用于数据的批量分析;



10.clear()函数

·功能:清空字典的item项

·演示如下:

>>> a
{‘a‘: 1, ‘c‘: 3, ‘b‘: ‘cover2‘, ‘e‘: 4, ‘g‘: ‘cover1‘, ‘f‘: 5}
>>> a.clear()
>>> a
{}

·与del不同,del是直接删除字典:

>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name ‘a‘ is not defined


11.copy()函数

·功能:对字典进行浅复制;

·Python中普通情况下的“复制”:

>>> xpleaf
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: None, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf_copy = xpleaf
>>> xpleaf_copy
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: None, ‘hobby‘: ‘IT‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf[‘hobby‘] = ‘IT_Field‘
>>> xpleaf_copy
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: None, ‘hobby‘: ‘IT_Field‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf_copy[‘wife‘] = ‘None!!!‘
>>> xpleaf_copy
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: ‘None!!!‘, ‘hobby‘: ‘IT_Field‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: ‘None!!!‘, ‘hobby‘: ‘IT_Field‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}

·即将变量赋给其它变量只是将对象(实际的字典)作一个引用传递而已,修改任何一个引用都会改变原来对象的值;

·copy()的浅复制功能则不是引用传递:

>>> xpleaf_copy2 = xpleaf.copy()
>>> xpleaf_copy2
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: ‘None!!!‘, ‘hobby‘: ‘IT_Field‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf_copy2[‘wife‘] = ‘CL‘
>>> xpleaf_copy2
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: ‘CL‘, ‘hobby‘: ‘IT_Field‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}
>>> xpleaf
{‘name‘: ‘xpleaf‘, ‘weight‘: ‘55kg‘, ‘wife‘: ‘None!!!‘, ‘hobby‘: ‘IT_Field‘, ‘dream‘: ‘excellent hacker‘, ‘occupation‘: ‘student‘}

·当然copy()更重要的作用不仅在于此,这里只是简单提及它的作用。

时间: 2024-10-26 21:06:28

【Python之旅】第二篇(四):字典的相关文章

Objective-C学习之旅 第二篇

Objective-C学习之旅 第二篇 Objective-C 字符串处理 //苹果从iOS5开始,就引入了ARC这种内存管理技术,目的就是消除繁琐而容易出错的手工内存管理行为. //如果项目是ARC的,那么就不能调用原来的retain, release, autorelease,而且dealloc也不再需要内存维护相关的代码. //也就是说下面的例子中,如果在ARC模式下,就不用[astring release]; /**************************************

由浅入深,走进Python装饰器-----第二篇:进阶--函数装饰函数

上一篇:由浅入深,走进Python装饰器-----第一篇:基础 装饰器的使用种类: # 第一种 @函数 被装饰函数 # 第二种 @函数 被装饰类 # 第三种 @类 被装饰类 # 第四种 @函数 被装饰函数 本篇介绍第一种 @函数 被装饰函数 1.1 对带参数的原函数进行修饰 # 默认将old函数的参数传给outer里面的第一层函数 def outer(f): def inner(var): print("1 我是outer函数,接收外部传进来的old :",f) print("

Python开发【第二篇】:初识Python

Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第四!!!   Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前业内几乎所有大中型互联网企业都

Python自动化 【第二篇】:Python基础-列表、元组、字典

本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,让我们先来象征性的学2个简单的. sys 1 #!/usr/bin/env python 2 3 # -*- coding: utf-8 -*- 4 5 6 7 import sys 8 9 10 11 print(sys.argv) 12 13

【Python之旅】第四篇(一):Python装饰器

有时候拿到一个程序接口,需要对其进行扩展,但是又不能修改原来接口的源代码,这时候就需要使用装饰器了. 有下面一个小程序,假如是别人提供给我们的调用接口: import time def sayHi():         time.sleep(1)         print 'Hello, I am xpleaf.' 一般情况下,如果想要计算该程序的执行时间(因为有可能要对该接口进行某些性能上的测试),就需要把以上接口修改为下面这样,同时执行一下: 程序代码: import time def s

【Python之旅】第四篇(三):Python面向对象编程详解

终于是来到了Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下. 1.面向对象编程的相关名词及解释 世界万物,皆可分类,一切皆为对象. 所谓的面向对象编程,指的是一种编程的思想,通过对具体代码实现过程(面向过程编程)的不断抽象,以形成一个个的类别,以提高我们进行大型程序编写的效率(面向对象的具体实现需要面向过程,大型程序也可以用面向过程来编写,只是比较麻烦).对于面向对象编程的相关名词和解释如下: 对象 :类的实体\一个叫Rain的

python之旅4[第四篇]

常用内置函数 map  遍历序列,对序列中的每个元素操作,获取新的序列 如下 1 对所有元素加10 2 li = [11,22,33,44] 3 def func(arg): 4 return arg + 10 5 new_list = map(func,li) 6 print new_list 7 结果 8 [21, 32, 43, 54] filter 对于序列中的元素进行处理,True的H值返回 1 li = [11,22,33,44,"ddd",0,False] 2 print

Python之旅 (基础篇1-22)

格式化输出:format  %s  %d 第一种写法: #name=input('name:') #age=input('age:') #job=input('job:') #info=''' #name:%s #age:%s #job:%s #'''%(name,age,job) #print (info) #name=input ('请输入名字:') #age=input ('请输入年龄:') #score=input ('请输入成绩:') #mag ='我叫%s,我今年%s,我成绩是优秀%

我的Python之旅第二天

一 .字符串操作 1单引号('').双引号("").三引号(""" """)的区别. 如果字符串中不包含单引号.双引号,则三个引号没有区别. msg1="Today is a nice day,everyday is a new day" print(msg1) Today is a nice day,everyday is a new day 如果字符串中包含单引号,则应使用双引号或者三引号. msg2=

Python开发【第二篇】: 基本数据类型(一)

1. 整型 ??整型即整数,用 int 表示,在 Python3 中整型没有长度限制. 1.1 内置函数 ??1. int(num, base=None) ??int( ) 函数用于将字符串转换为整型,默认转换为十进制. >>> int('123') 123 >>> int('123', base=16) 291 ??2. bit_length( num) ??当前数字的二进制,至少用多少位表示. >>> a = 5 >>> a.bi