Python中的字典怎么理解呢,比如你打开《新华字典》,想要查找“猪”这个字,你首先要检索的是字母z,然后再找到zhu的发音,最后再找到猪的释义:一种家养或者野生的杂食性动物。所以在Python的字典中,把这个字称作键(key),对应的含义称为值(value)。先来看个例子:
- dict1 = {"李宁":"一切皆有可能", "耐克":"Just do it", "阿迪达斯":"Impossible is nothing"}
- dict1
- >>> {'李宁': '一切皆有可能', '耐克': 'Just do it', '阿迪达斯': 'Impossible is nothing'}
-
- for each in dict1:
- print("%s -> %s" % (each, dict1[each]))
- >>> 李宁 -> 一切皆有可能
- 耐克 -> Just do it
- 阿迪达斯 -> Impossible is nothing
字典的使用是比较简单的,用标志性的符号表示({})表示,字典有“键”和“值”共同组成,每一对键值组合称为“项” ,在上边的例子中,李宁,耐克,阿迪达斯,这些就是键,而一切皆有可能,Just do it, Impossible is nothing,这些就是对应的值。注意:字典的键必须独一无二,但值不必。
- empty = {}#创建一个空字典
- empty
- >>> {}
-
- #####使用dict()内置函数来创建#####
- dict1 = dict((('A',10),('B',20),('C',30),('D',40)))
- dict1
- >>> {'A': 10, 'B': 20, 'C': 30, 'D': 40}
-
- ####简单一点的写法#####
- dict1 = dict(A = 10, B = 20, C = 30, D = 40)
- dict1
- >>> {'A': 10, 'B': 20, 'C': 30, 'D': 40}
使用dict()函数时,要注意dict()的参数可以是一个序列,但不能是多个,所以在例子中的打包成了一个元组。访问字典里的值与访问序列类似,只需要把键放入方括号即可。比如dict['A']。
最后,字典是不允许同一个键出现两次,如果同一个键被赋值两次,后一个值会被记住。
- words = {'李白':"床前明月光,疑是地上霜", '杜甫': "会当凌绝顶,一览众山小", '李白':"天生我材必有用,千金散尽还复来"}
- words
- >>> {'李白': '天生我材必有用,千金散尽还复来', '杜甫': '会当凌绝顶,一览众山小'}
(1)fromkeys()方法
fromkeys()方法用于创建一个并返回一个新的字典,它有两个参数,一个参数是字典的键;第二个参数是可选的,是传入键对应的值,如果不传入,则默认为None。举个例子:
- dict2 = {}
- dict2.fromkeys((1,2,3), "numbers")
- >>> {1: 'numbers', 2: 'numbers', 3: 'numbers'}
-
- dict2 = {}
- dict2.fromkeys((1,2,3))
- >>> {1: None, 2: None, 3: None}
(2)keys(), values(), items()方法
这三种方法分别对应访问字典的三种方法,keys()用于返回字典里边里的键,values()用于返回字典中的所有值,item()用于返回字典中所有的键值对。
- dict3 = {}
- dict3 = dict3.fromkeys(range(32), "桃子")
- dict3.keys()
- >>> dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
-
-
- dict3 = {}
- dict3 = dict3.fromkeys(range(32), "桃子")
- dict3.values()
- >>> dict_values(['桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子', '桃子'])
-
- dict3 = {}
- dict3 = dict3.fromkeys(range(32), "桃子")
- dict3.items()
- >>> dict_items([(0, '桃子'), (1, '桃子'), (2, '桃子'), (3, '桃子'), (4, '桃子'), (5, '桃子'), (6, '桃子'), (7, '桃子'), (8, '桃子'), (9, '桃子'), (10, '桃子'), (11, '桃子'), (12, '桃子'), (13, '桃子'), (14, '桃子'), (15, '桃子'), (16, '桃子'), (17, '桃子'), (18, '桃子'), (19, '桃子'), (20, '桃子'), (21, '桃子'), (22, '桃子'), (23, '桃子'), (24, '桃子'), (25, '桃子'), (26, '桃子'), (27, '桃子'), (28, '桃子'), (29, '桃子'), (30, '桃子'), (31, '桃子')])
-
(3)get()方法
get()方法也有两个参数,第一个参数为字典的键,第二个为可设置参数,不设置默认为None。
- dict3.get(22)
- >>> '桃子'
(4)copy(),pop(),popitem(),update()
- a = {1:"one", 2:"two", 3:"three"}#####复制一个相同的字典
- b = a.copy()
- b
- >>> {1: 'one', 2: 'two', 3: 'three'}
-
- a = {1:"one", 2:"two", 3:"three"}###弹出给定键对应的值
- b = a.pop(2)
- b
- >>> "two"
-
- a = {1:"one", 2:"two", 3:"three"}###弹出一个项,默认弹出末尾的项
- b = a.popitem()
- b
- >>> (3, 'three')
-
- b = {1:"one", 2:"two", 3:"three"}####更新字典
- b.update(pin = "four")
- b
- >>> {1: 'one', 2: 'two', 3: 'three', 'pin': 'four'}