clear

clear方法用户清除字典中所有的值;
e.g.
>>> d={}
>>> d['name']='Gumby'
>>> d['age']=42
>>> d
{'age': 42, 'name': 'Gumby'}
>>> d.clear()
>>> d
{}

虽然d={}和d.clear()都可以清除字典中的所有的值,但是两者还是有一定区别的:
e.g.
>>> x={}
>>> y=x
>>> x['key']='value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x={}
>>> x
{}
>>> y
{'key': 'value'}

可见字典x与y并没有一起变化,如果想要字典x和y一起变化的话,那么就使用字典的clear方法。
e.g.
>>> x={}
>>> y=x
>>> x['key']='value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x.clear()
>>> x
{}
>>> y
{}

总结:x 与 y 字典,当使用x={}时,实际上是创建了一个新的对象,所以y没有变化。当使用clear方法时,x、y指向的是同一个对象,clear方法清除的是它们指向的对象。

copy

copy方法返回一个具有相同键-值对的新字典。(浅复制)
e.g.
>>> x={'username':'admin','machines':['foo','bar','baz']}
>>> x
{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y=x.copy()
>>> y['username']='mlh'
>>> y['machines'].remove('bar')
>>> y
{'username': 'mlh', 'machines': ['foo', 'baz']}
>>> x
{'username': 'admin', 'machines': ['foo', 'baz']}

浅复制原始字典是不受更改的影响,而受删除的影响。

deepcopy
>>> d1={}
>>> from copy import deepcopy
>>> d1['names']=['Alfred','Bertrand']
>>> c = d1.copy()
>>> dc = deepcopy(d1)
>>> d1['names'].append("Clive")
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']}

浅复制相当于快捷方式
深辅助相当于完全复制

fromkeys

formkeys方法使用给定的键建立新的字典,每个键默认对应的值为None。
e.g.
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
此处建立了一个新的字典,参数全部变成键,值默认都为None

>>> dict.fromkeys(['name','age'])
{'age': None, 'name': None}
使用dict结合使用也可以

>>> dict.fromkeys(['name','age'],'(unknown)')
{'age': '(unknown)', 'name': '(unknown)'}
在fromkeys方法后加入,x就可以指定值为x。

get

get方法是一个访问字典的方法
e.g.
>>> d={}
>>> print d['name']

Traceback (most recent call last):
  File "<pyshell#58>", line 1, in <module>
    print d['name']
KeyError: 'name'
如果字典d中没有name这个键,那么就会报错。

>>> print d.get('name')
None
如果不想看到报错,那么就使用get方法。

>>> d.get('name','loool')
'loool'
get方法默认显示None,也可以指定为其他提示。

使用get做一个简单的小程序:
people = { 'Alice':{ 'phone':'2341' , 'addr':'foo drive 23'},
           'Beth':{ 'phone':'9102','addr':'bar street 42' },
           'Cecil':{ 'phone':'3158', 'addr':'Baz avenue 90'}
           }

labels = {'phone':'phone number','addr':'address'}

name = raw_input('Name: ')

request = raw_input('Phone number (p) ir address (a)')

key = request

if request == 'p' : key = 'phone'
if request == 'a' : key = 'addr'

person = people.get(name,{})

label = labels.get(key,key)

result = person.get(key,'not available')

print "%s's %s is %s" % (name , label, result)

执行测试:

Name: Alice
Phone number (p) ir address (a)a
Alice's address is foo drive 23

Name: Beth
Phone number (p) ir address (a)p
Beth's phone number is 9102

has_key

has_key方法可以检查字典中是否含有给出的键。
e.g.
>>> d={}
>>> d.has_key('name')
False
>>> d['name']='Eric'
>>> d.has_key('name')
True

找到就显示True,未找到就显示False

items

items方法将所有的字典项以列表方式返回。
>>> d={'title':'Python web site','url':'http://www.python.org','spam':0}
>>> d
{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python web site'}
>>> d.items()
[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python web site')]

将d字典转化为一个列表,每个列表元素就是一个元组。

iteritems

iteritems返回的一个迭代器对象
>>> it = d.iteritems()
>>> it
<dictionary-itemiterator object at 0x01F09DE0>
>>> list(it)
[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python web site')]
可以将迭代器转化成列表。

keys

keys方法用来将字典中的键以列表的形式返回,与perl中相同。
>>> d
{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python web site'}
>>> d.keys()
['url', 'spam', 'title']

iterkeys

iterkeys返回键的迭代器
e.g.
>>> d
{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python web site'}
>>> it=d.iterkeys()
>>> it
<dictionary-keyiterator object at 0x01F09E70>
>>> list(it)
['url', 'spam', 'title']
也可以变成列表

pop

pop方法用来获得对应给定键的值,然后将这个键-值对从字典中移除
e.g.
>>> d={'x':1,'y':2}
>>> d
{'y': 2, 'x': 1}
>>> d.pop('x')
1
>>> d
{'y': 2}
能返回值且能删除

popitem

popitem方法会弹出列表的最后一个元素并删除。若应用字典,就弹出随机的项。
e.g.
>>> d
{'y': 2, 'x': 1, 'z': 3}
>>> d.popitem()
('y', 2)
>>> d.popitem()
('x', 1)
>>> d.popitem()
('z', 3)
>>> d.popitem()
>>> d
{}

setdefault

setdefault方法类似于get方法,另发还有在字典中不含有定键的情况下设定相应的值。
e.g.
>>> d
{}
>>> d={}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
如果字典中不存在将新建这个项

>>> d['name']='Tom'
>>> d
{'name': 'Tom'}
>>> d.setdefault('name','N/A')
'Tom'
如果字典中存在这个键将显示原有的,而不显示设定的。

update

update方法可以利用一个字典项更新另外一个字典。
e.g.
>>> d={'title':'Python web site','url':'http://www.python.org','changed':'Mar 14 22:22:22 MET 2015'}
>>> d
{'url': 'http://www.python.org', 'changed': 'Mar 14 22:22:22 MET 2015', 'title': 'Python web site'}
>>> x={'url':'http://www.perl.org'}
>>> x
{'url': 'http://www.perl.org'}
>>> d.update(x)
>>> d
{'url': 'http://www.perl.org', 'changed': 'Mar 14 22:22:22 MET 2015', 'title': 'Python web site'}

x中的perl更新掉了d中的python。

values

values方法以列表的方式返回字典中的值。
>>> d.values()
['http://www.perl.org', 'Mar 14 22:22:22 MET 2015', 'Python web site']

itervalues
itervalues方法以迭代器的形式放回字典中的值。
>>> d.itervalues()
<dictionary-valueiterator object at 0x01EFB930>
>>> list(d.itervalues())
['http://www.perl.org', 'Mar 14 22:22:22 MET 2015', 'Python web site']
可转换为列表。

跟我一起学Python之十一:字典方法相关推荐

  1. turtle 函数 方法_学python第十一节:turtle深入 了解

    学python第十一节:深入分析turtle Turtle是一个直观有趣的图形绘制函数. 这节课对turtle的以下几点进行补充: 在蟒蛇绘制代码中提到过import 库引用保留字的函数,是补充pyt ...

  2. 从零开始学Python编程之魔法方法

    大家好,我是岛上程序猿,欢迎关注! Python中的魔法方法是一种特殊方法,以双下划线开头和结尾,并且可以在类定义中定义,用于执行特定的操作.在本文中,我们将介绍魔法方法的作用.如何使用它们以及Pyt ...

  3. 新手学Python有什么好方法?如何学好Python?

    对于新手来说,如何快速入门掌握Python编程呢?这个问题问的非常不错.学习编程来说,虽然语言具有简单化的优势,但是同样学习起来非常的麻烦,想要快速学习好一门语言,唯有站在别人的肩膀上才可以更快一些, ...

  4. 【“笨办法”学Python】39.字典,可爱的字典

    39.字典,可爱的字典 文章目录 前言 一.字典和列表的基本操作 二.字典的例子 三.字典的作用 总结 前言   字典也是一种数据结构,和列表一样,它是编程中最常用的数据结构之一. 一.字典和列表的基 ...

  5. 少儿编程100讲轻松学python(十一)-python如何保留小数点位数

    前言 python保留小数点位数的方法:首先新建py文件,输入[a=('%.2f'%a)]即可保留2位小数:然后如果输入[a=('%.4f'%a)],就保留4位小数:最后也可以输入[a=format( ...

  6. 《手把手陪您学Python》26——自定义函数

    在上一篇<手把手陪您学Python>25--列表推导式中,我们学习了推导式的相关概念和使用方法,使用推导式的方法,可以减少代码的输入量.提高可读性,是Python中非常受欢迎的一种形式. ...

  7. 《手把手陪您学Python》50——数组的dtype属性

    在上一篇<手把手陪您学Python>49--数组的shape属性中,我们对数组的"形状"及其表示方式有了更为深入的了解. 今天,我们将会继续学习数组的属性,但不是与数组 ...

  8. 《手把手陪您学Python》42——类的魔法方法

    在上一篇<手把手陪您学Python>41--类方法与实例方法中,我们引入了类方法的概念,并介绍了类方法与实例方法在语法规则和引用方面的差异.今天,我们将会继续介绍实例方法的应用,并介绍一种 ...

  9. 学python人工智能需要多久_人工智能Python开发怎么学才能最快入门

    原标题:人工智能Python开发怎么学才能最快入门 学习 Python 的捷径是什么? 学习Python编程有没有捷径?有,那就是学习过程中牢记三个字--写.背.练 写的意思是把书中所有代码独自写一遍 ...

最新文章

  1. 剑指offer:二叉树的下一个节点
  2. 看固态存储厂商在硝烟四起的市场中如何发展?
  3. 听说你想去大厂看妹子,带你看看字节跳动Android开发岗面试是啥样?
  4. MySQL存储引擎精讲(附带各种存储引擎的对比)
  5. SQLite学习手册(实例代码二)
  6. 饿了么EMonitor演进史
  7. python测试题 - 列表,字典,字符串
  8. Linux的网卡由eth0变成了eth1,如何修复
  9. 如何保证API接口数据安全?
  10. PostgreSQL技术周刊第17期:PostgreSQL用户应掌握的高级SQL特性
  11. 当当网价格系统架构分析
  12. AllenNLP安装
  13. python如何进行数据挖掘_如何使用python实现文本数据挖掘?
  14. Linux GCC 编译过程分析及常用检错的编译选项
  15. 电商订单系统设计简析(一)
  16. 第一个报表(简单滴)
  17. 一般硬盘读取速度和写入速度是多少
  18. python的学习笔记案例3--基础代谢率计算1.0
  19. CSDN【精品专栏】第22期
  20. 如何查看yum 安装的软件路径(不要再忘了)

热门文章

  1. 美团半年财报出炉,外卖业务增长背后鲜为人知的秘密
  2. JIT引擎触发RowHammer可行性研究
  3. 在IP网络中,P、PE、CE代表意思
  4. Oracle中的函数——Round()函数
  5. WuThreat身份安全云-TVD每日漏洞情报-2022-12-09
  6. C++中野指针问题以及如何杜绝野指针
  7. Docker Macvlan网络实验
  8. WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商
  9. linux中curl 访问接口返回:“Disallowed Key Characters ”(php CI框架)
  10. 为什么说使用HTTP代理上网更安全?