前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python dict

python dict

作者头像
py3study
发布2020-01-09 12:45:02
4040
发布2020-01-09 12:45:02
举报
文章被收录于专栏:python3

1、Dictionary语法

  • Dictionary由key/value对(称为项目)组成,key和value之间用“:”分割,项目用“,”分割,所有项目用“{}”包括起来

>>> phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

  • Dictionary的key值必须唯一,否则后者会覆盖前者:

>>> phonebook = {'Alice': '2341', 'Alice': '9102', 'Cecil': '3258'}>>> phonebook{'Alice': '9102', 'Cecil': '3258'}

  • 使用dict()函数可以从Mapping(如其它的Dictionary)或key/value形式的Sequence创建Dictionary:

>>> items = [('name', 'Gumby'), ('age', 42)]>>> d = dict(items)>>> d{'age': 42, 'name': 'Gumby'}

  • 也可以用keyword参数来创建Dictionary:

>>> d = dict(name='Gumby', age=42)>>> d{'age': 42, 'name': 'Gumby'} 2、基本Dictionary操作

  • Dictionary支持Sequence的基本操作,但要注意下面几点:
  • key值可以是任何类型,但必须是不可变类型,如整数、浮点数、String、Tuple
  • 对项目赋值时,如果key值不存在,会新建项目:

>>> x = {}>>> x[42] = 'Foobar'>>> x{42: 'Foobar'}

  • 使用in操作符时,是查找key值,而不是value值

3、使用Dictionary格式化String

  • 转换形式:%(key)type(type是转换类型)

>>> template = '''<html><head><title>%(title)s</title></head><body><h1>%(title)s</h1><p>%(text)s</p></body>'''>>> data = {'title': 'My Home Page', 'text': 'Welcome to my home page!'}>>> print template % data<html><head><title>My Home Page</title></head><body><h1>My Home Page</h1><p>Welcome to my home page!</p></body> 4、Dictionary方法

(1) clear:移去Dictionary中所有的元素

>>> d = {'age': 42, 'name': 'Gumby'}>>> d{'age': 42, 'name': 'Gumby'}>>> d.clear()>>> d{}

  • 注意,d.clear()和d = {}结果相同,但含义不同:后者是指向了一个新的空Dictionary

(2) copy:返回具有相同key/value对的新Dictionary(注意value值是共用的)

>>> 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']}

  • 避免上面问题的方法是对value值也进行拷贝,可以使用copy模块中的deepcopy()函数:

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

(3) fromkeys:根据给定的key值创建新的Dictionary,缺省value值为None

>>> {}.fromkeys(['name', 'age']){'age': None, 'name': None}

  • 可以使用Dictionary的Type(后面讲述):dict

>>> dict.fromkeys(['name', 'age']){'age': None, 'name': None}

  • 可以指定value的缺省值:

>>> dict.fromkeys(['name', 'age'], '(unknown)'){'age': '(unknown)', 'name': '(unknown)'}

(4) get:获取项目的value值(不常用)

  • 注意下面的区别:

>>> d = {}>>> print d['name']Traceback (most recent call last): File "<interactive input>", line 1, in ?KeyError: 'name'>>> print d.get('name')None

  • 可以指定缺省值(缺省是None):

>>> d.get('name', 'N/A')'N/A'

(5) has_key:检查Dictionary中是否有指定key

>>> d = {}>>> d.has_key('name')0>>> d['name'] = 'Eric'>>> d.has_key('name')1

(6) items和iteritems

  • items()以List返回Dictionary中所有项目,每个项目的形式是(key, value):

>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}>>> d.items()[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]

  • iteritems()返回Iterator对象:

>>> d.iteritems()<dictionary-itemiterator object at 0x0101CA60>>>> list(d.iteritems())[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]

(7) keys和iterkeys

>>> d.keys()['url', 'spam', 'title']>>> d.iterkeys()<dictionary-keyiterator object at 0x01073720>>>> list(d.iterkeys())['url', 'spam', 'title']

(8) pop:根据指定key返回value,并从Dictionary中移去该项目:

>>> d = {'x': 1, 'y': 2}>>> d.pop('x')1>>> d{'y': 2}

(9) popitem:从Dictionary中随机弹出一个项目返回(Dictionary中的项目是无序的)

>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}>>> d.popitem()('url', 'http://www.python.org')>>> d{'spam': 0, 'title': 'Python Web Site'}

(10) setdefault:根据指定的key值,对不在Dictionary的项目设置value值

>>> d = {}>>> d.setdefault('name', 'N/A')'N/A'>>> d{'name': 'N/A'}>>> d['name'] = 'Gumby'>>> d.setdefault('name', 'N/A')'Gumby'>>> d{'name': 'Gumby'}

  • 如果不指定缺省值,则使用None

(11) update:使用另一个Dictionary的项目来更新指定Dictionary

>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2005'}>>> x = {'title': 'Python Language Website'}>>> d.update(x)>>> d{'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2005', 'title': 'Python Language Website'}(12) values和itervalues>>> d.values()['http://www.python.org', 'Mar 14 22:09:15 MET 2005', 'Python Language Website']>>> d.itervalues()<dictionary-valueiterator object at 0x01073900>>>> list(d.itervalues())

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档