python字典--知识点总结

前言:

代码使用python2.7


字典的创建:

方式1:

>>> d = {'a':2,'b':3,'c':5}
>>> d
{'a': 2, 'c': 5, 'b': 3}

方式2:

>>> d = {}
>>> d['a'] = 2
>>> d['b'] = 3
>>> d['c'] = 5
>>> d
{'a': 2, 'c': 5, 'b': 3}

方式3:

>>> d = dict((['a',2], ['b',3], ['c',5]))
{'a': 2, 'c': 5, 'b': 3}

方式4:

>>> d = {}.fromkeys(('a','b','c'), 2)   # fromkeys() 方法将值都设为了2
{'a': 2, 'c': 2, 'b': 2}

嵌套定义:

>>> d = {'letter':{'a':2, 'b':3, 'c':5},
         'number':[100,200,700],
         'character':('*', '&', '^'),
         'others':'happy'}
>>> d
{'character': ('*', '&', '^'), 'number': [100, 200, 700], 'letter':{'a': 2, 'c': 5, 'b': 3}, 'others': 'happy'}


添加:

方式1:

直接添加:

>>> d = {'a':2, 'b':3}
>>> d
{'a': 2, 'b': 3}
>>> d['c'] = 5
>>> d
{'a': 2, 'c': 5, 'b': 3}

方式2:

setdefault() 方法。

方式3:

update() 方法。

方式4:

如果是添加多个元素,可以先将其转化成字典,再利用字典合并


删除:

方式1:

del 命令:

>>> d = {'a':2, 'b':3, 'c':5}
>>> del d['b']
>>> d
{'a': 2, 'c': 5}
>>> del d
>>> d
{}

方式2:

pop() 方法。

方式3:

clear() 方法删除所有元素。


排序:

>>> d = {'c':3, 'd':4, 'b':5, 'a':2}
>>> sorted(d.iteritems(), key = lambda asd:asd[0], reverse = False)   #对键进行递增排序
[('a', 2), ('b', 5), ('c', 3), ('d', 4)]
>>> sorted(d.iteritems(), key = lambda asd:asd[0], reverse = True)   #对键进行递减排序
[('d', 4), ('c', 3), ('b', 5), ('a', 2)]
>>> sorted(d.iteritems(), key = lambda asd:asd[1], reverse = False)   #对值进行递增排序
[('a', 2), ('c', 3), ('d', 4), ('b', 5)]
>>> sorted(d.iteritems(), key = lambda asd:asd[1], reverse = True)   #对值进行递减排序
[('b', 5), ('d', 4), ('c', 3), ('a', 2)]


字典的合并:

方式1:

利用items()方法获取所有元素,再将所有元素组成一个字典:

>>> d1 = {'a':2, 'b':3, 'c':5}
>>> d2 = {'a':10, 'd':100}
>>> d = dict(d1.items() + d2.items())
>>> d
{'a': 10, 'c': 5, 'b': 3, 'd': 100}

方式2:

利用 update() 方法(此方式比方式1快许多)。

两个列表合并成字典:

>>> a1 = {'a', 'b', 'c'}
>>> a2 = {2, 3, 5}
>>> d = dict(zip(a1, a2))
>>> d
{'a': 2, 'c': 3, 'b': 5}
>>> d2 = dict(map(lambda x,y:[x,y], a1, a2))
>>> d2
{'a': 2, 'c': 3, 'b': 5}


字典的内置方法(绿色为常用方法):

  1. clear() :清除字典中的所有元素。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.clear()
    >>> d
    {}
  2. copy() :复制字典的值,如果直接用 “=” 复制的是字典的地址。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> c = d.copy()
    >>> c
    {‘a’:2, ‘b’:3, ‘c’:5}
  3. fromkeys(seq,value=None) :根据列表(或元组)seq作为键新建一个字典,值统一设为value。
    >>> mykeys = (‘a’, ‘b’, ‘c’)
    >>> d = dict.fromkeys(mykeys)
    >>> d
    {‘a’: None, ‘c’: None, ‘b’: None}
    >>> d = dict.fromkeys(mykeys, 2)
    >>> d
    {‘a’: 2, ‘c’: 2, ‘b’: 2}
  4. get(key,default=None) :找到键key对应的值,如果不存在则返回default。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.get(‘b’)
    3
    >>> d.get(‘d’, 100)
    100
  5. has_key(key) :查询字典中是否含有键key,返回 True 或者 False
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.has_key(‘a’)
    True
  6. items() :返回字典的元素。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.items()
    [(‘a’, 2), (‘c’, 5), (‘b’, 3)]
  7. iteritems():items()以列表的形式返回字典元素的键、值,而iteritems()以迭代器形式返回。python3已丢弃此方法。
  8. viewitems():效果如下。python3已丢弃此方法
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.viewitems()
    dict_items([(‘a’, 100), (‘c’, 5), (‘b’, 3), (‘d’, 200)])
  9. keys() :返回字典的所有键。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.keys()
    [‘a’, ‘c’, ‘b’]
  10. iterkeys():keys()以列表的形式返回字典元素的键,而iterkeys()以迭代器形式返回。python3已丢弃此方法。
  11. viewkeys():效果如下。python3已丢弃此方法。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.viewitems()
    dict_keys([‘a’, ‘c’, ‘b’, ‘d’])
  12. values() :返回字典的所有值
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.values()
    [2, 5, 3]
  13. itervalues():values()以列表的形式返回字典元素的值,而itervalues()以迭代器形式返回。python3已丢弃此方法。
  14. viewvalues():效果如下。python3已丢弃此方法。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.viewitems()
    dict_values([100, 5, 3, 200])
  15. pop(key) :将key所对应的元素“出栈”,并返回该key对应的值。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.pop(‘b’)
    3
    >>> d
    {‘a’: 2, ‘c’: 5}
  16. popitem() :将字典的第一个元素出栈,但是由于字典是无序的,所有popitem()具有一定的随机性。结果返回一个列表,包含出栈的键、值。
    >>> d = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d.popitem(‘b’)
    (‘a’, 2)
    >>> d
    {‘c’: 5, ‘b’: 3}
  17. setdefault(key,value) :查找字典中是否有键为key的元素,如果没有则添加一个元素,键为key,值为value。
    >>> d = {‘a’:2, ‘b’:3}
    >>> d.setdefault(‘c’,5)   # d 中不含键 ‘c’,则添加一个键 ‘c’,值为5
    >>> d
    {‘a’: 2, ‘c’: 5, ‘b’: 3}
    >>> d.setdefault(‘b’,5)   #如果 d 中包含键 ‘b’,则不添加
    >>> d
    {‘a’: 2, ‘c’: 5, ‘b’: 3}
  18. update(dict2) :将字典dict2中的元素更新到dict中去。
    >>> d1 = {‘a’:2, ‘b’:3, ‘c’:5}
    >>> d2 = {‘a’:10, ‘d’:100}
    >>> d1.update(d2)   #等价于 d1 = dict[d1, **d2]
    >>> d1
    {‘a’: 10, ‘c’: 5, ‘b’: 3, ‘d’: 100}


各种报错信息:

  1. TypeError: ‘builtin_function_or_method’ object is not iterable———–经常是因为调用方法,忘了添加括号()导致出错。


转载请注明出处,谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/46958199
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值