您的位置:首页 > 编程语言 > Python开发

python字典--知识点总结

2015-07-19 20:57 751 查看

前言:

代码使用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}


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



:清除字典中的所有元素。

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

>>> d.clear()

>>> d

{}

:复制字典的值,如果直接用 “=” 复制的是字典的地址。

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

>>> c = d.copy()

>>> c

{‘a’:2, ‘b’:3, ‘c’:5}

:根据列表(或元组)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}

:找到键key对应的值,如果不存在则返回default。

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

>>> d.get(‘b’)

3

>>> d.get(‘d’, 100)

100

:查询字典中是否含有键key,返回 True 或者 False

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

>>> d.has_key(‘a’)

True

:返回字典的元素。

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

>>> d.items()

[(‘a’, 2), (‘c’, 5), (‘b’, 3)]

iteritems():items()以列表的形式返回字典元素的键、值,而iteritems()以迭代器形式返回。python3已丢弃此方法。

viewitems():效果如下。python3已丢弃此方法

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

>>> d.viewitems()

dict_items([(‘a’, 100), (‘c’, 5), (‘b’, 3), (‘d’, 200)])

:返回字典的所有键。

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

>>> d.keys()

[‘a’, ‘c’, ‘b’]

iterkeys():keys()以列表的形式返回字典元素的键,而iterkeys()以迭代器形式返回。python3已丢弃此方法。

viewkeys():效果如下。python3已丢弃此方法。

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

>>> d.viewitems()

dict_keys([‘a’, ‘c’, ‘b’, ‘d’])

:返回字典的所有值

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

>>> d.values()

[2, 5, 3]

itervalues():values()以列表的形式返回字典元素的值,而itervalues()以迭代器形式返回。python3已丢弃此方法。

viewvalues():效果如下。python3已丢弃此方法。

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

>>> d.viewitems()

dict_values([100, 5, 3, 200])

:将key所对应的元素“出栈”,并返回该key对应的值。

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

>>> d.pop(‘b’)

3

>>> d

{‘a’: 2, ‘c’: 5}

:将字典的第一个元素出栈,但是由于字典是无序的,所有popitem()具有一定的随机性。结果返回一个列表,包含出栈的键、值。

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

>>> d.popitem(‘b’)

(‘a’, 2)

>>> d

{‘c’: 5, ‘b’: 3}

:查找字典中是否有键为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}

:将字典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}



各种报错信息:

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

转载请注明出处,谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/46958199
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: