Python中的字典

字典类似Java中的Map,字典中的键可以是数字、字符串甚至是元组。

创建和使用字典

>>> people = {'jack':34,'rose':25,'jack':36}
>>> people
{'rose': 25, 'jack': 36}

上面就是创建字典的方法,注意,字典中键是唯一的,我输入了两个’jack’,结果取的是后面输入的’jack’。

dict函数

也可以使用dict函数,通过其他映射(字典)或者(键,值)对的序列建立字典

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

也可以通过关键字参数来创建字典:

>>> d = dict(name='rose',age=43)
>>> d
{'age': 43, 'name': 'rose'}

字典的基本操作

字典的基本操作很多方面与序列类似:

  • len(d) 返回d中项(键值对)的数量
  • d[k]返回k对应的值
>>> d
{'age': 43, 'name': 'rose'}
>>> d['age']
43
>>> d['a']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'

如果输入不存在的键,会报错。

  • d[k]=v将值v关联到键k上
>>> d['a'] = 1
>>> d
{'a': 1, 'age': 43, 'name': 'rose'}

可以关联一个不存在的键,那么就是添加一个新的键值对。如果关联已存在的键,则是覆盖。

  • del d[k]删除键为k的项
  • k in d检查d是否含有键为k的项

键可以是任意不可变类型

字典的格式化字符串

可以在%后面加上键:

>>> people
{'rose': 25, 'jack': 36}
>>> " rose's age is %(rose)s" % people #%(rose)s 在%s中间加入了(rose)
" rose's age is 25"

字典方法

  • fromkeys
    使用给定的键建立新的字典,每个键对应的值默认为None,也可以指定:
>>> {}.fromkeys(('name','age'))
{'age': None, 'name': None}
>>> {}.fromkeys(('name','age'),'unknown')#指定'unknown'
{'age': 'unknown', 'name': 'unknown'}
  • get
    get访问字典中不存在的项时不会出错,并返回None。
>>> people
{'rose': 25, 'jack': 36}
>>> print people.get('a')
None
>>> people.get('rose')
25

还可以自定义默认值:

>>> people.get('a',10)
10
  • items和iteritems

items方法将字典的所有项以列表的方式返回:

>>> people.items()
[('rose', 25), ('jack', 36)]

iteritems方法返回一个迭代器对象:

>>> it = people.iteritems()
>>> it
<dictionary-itemiterator object at 0x1baa7e0>
>>> list(it) #将迭代器转换为list
[('rose', 25), ('jack', 36)]
  • pop
    获取给定键的值,并将这项从字典中移除

  • update
    可以用一个字典项更新另外一个字典:

>>> people
{'rose': 25, 'jack': 36}
>>> x = {'jack':24}
>>> people.update(x)
>>> people
{'rose': 25, 'jack': 24}

x中如果有people中不存在的项,也会更新进去:

>>> people
{'rose': 25, 'jack': 24}
>>> x = {'jack':21,'cherry':20}
>>> people.update(x)
>>> people
{'rose': 25, 'jack': 21, 'cherry': 20}

猜你喜欢

转载自blog.csdn.net/yjw123456/article/details/78664909