字典自身是一个无序的可变容器,每个元素包含一对键值(key : value)。
key(键)
- 键值必须是不可变对象,可以是除了list外的任意数据类型,可以使用仅包含(字符串、数字)的元组作为键。
- 键值只允许出现1次,多次出现按照最后出现的键赋值为准。
一、创建dict字典
1) 一般方法
>>> cityInfo = {'City':'BeiJing',86:'CN',2016:2170.5,'GDP':22968.6}
2) dict()创建
>>> countryCode = dict([('CN','+86'),('USA','+001')])
>>> countryCode
{'CN': '+86', 'USA': '+001'}
#关键字参数指定 key-value 对
>>> countryCode = dict(USA='+001',JPN=81,CN=86)
>>> countryCode
{'USA': '+001', 'JPN': 81, 'CN': 86}
3)推导式
>>> myDict = {i:i**2 for i in (0,1,2,3,4,5)}
>>> myDict
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
4)fromkeys(iterable, value=None, /) 使用可迭代序列做key创建字典,value可以是任何数据类型
>>> myList = ['CN','USA','JPN','IND']
>>> myDict = dict.fromkeys(myList)
>>> myDict
{'CN': None, 'USA': None, 'JPN': None, 'IND': None}
二、访问dict字典的value值
1) 使用key键访问value值
>>> myDict = {'Name':'Simile',1:'Nub','Float':0.1,0:88,99.9:0.1}
>>> myDict['Name']
'Simile'
>>> myDict[1]#这里的[1]不同于list中的下标,这里代表的是字典中的key(键) 1
'Nub'
>>> myDict['Float']
0.1
>>> myDict[0]#这里的[0]不同于list中的下标,这里代表的是字典中的key(键) 0
88
>>> myDict[99.9]
0.1
>>>
三、修改dict字典的value值
1)使用key键修改value值
>>> myDict = {'Name':'Simile',1:'Nub','Float':0.1,0:88,99.9:0.1}
>>> myDict[1] = 'one'#注意这里的[1]不是下标,而是数字类型的key值
>>> myDict[1]
'one'
>>> myDict
{'name': 'Simile', 1: 'one', 'float': 0.1, 0: 88, 99.9: 0.1}
四、查找获取dict字典的key键
1)D.keys() 返回dict字典所有key键
#不使用list()返回元组安全类型
>>> myDict
{'CN': None, 'USA': None, 'JPN': None, 'IND': None}
>>> myDict.keys()
dict_keys(['CN', 'USA', 'JPN', 'IND'])
#使用list()返回一个由key键组成的无序列表
>>> countryCode = {'IND':'+91','CN':'+86','JPN':'+81','USA':'+001'}
>>> list(countryCode.keys())
['IND', 'CN', 'JPN', 'USA']
2)sorted() 返回一个由key键组成的有序列表
>>> sorted(countryCode.keys())
['CN', 'IND', 'JPN', 'USA']
3)in 判断key键是否存在
>>> 'CHK' in countryCode
False
>>> 'CN' in countryCode
True
>>> 'USA' not in countryCode
False
4)D.get(k[,d]) 如果key键存在dict字典中,返回key键对应的value值,不存在则返回default的默认value值None
>>> myDict = dict([('CN','+86'),('USA','+001')])
>>> myDict.get('CN')
'+86'
>>> myDict.get('JPN')#不存在的key不返回任何结果
>>>> myDict.get('JPN','+81')#但可以指定返回值
'+81'
5)D.setdefault(k[,d]) 类似 get() 的方法,若键不存在,则会添加进字典,default为默认值
>>> myDict = dict([('CN','+86'),('USA','+001')])
>>> myDict
{'CN': '+86', 'USA': '+001'}
>>> myDict.setdefault('JPN','+81')
'+81'
>>> myDict
{'CN': '+86', 'USA': '+001', 'JPN': '+81'}
五、查找dict字典中的value值
1) D.values() 返回dict字典中的所有value值
>>> myDict
{'CN': '+86', 'USA': '+001', 'JPN': '+81'}
>>> myDict.values()
dict_values(['+86', '+001', '+81'])
六、遍历dict字典
1) D.items() 以列表返回可遍历的key键value值元组
>>> myDict = dict.fromkeys(myList)
>>> myDict.items()
dict_items([('CN', None), ('USA', None), ('JPN', None), ('IND', None)])
#以列表返回的键值元祖可以用items()进行遍历返回键值
>>> countryCode = dict([('CN','+86'),('USA','+001')])
>>> for k,v in countryCode.items():
... print(k,v)
...
CN +86
USA +001
2)enumerate()位置和值
七、删除dict字典及其key键value值
1)del dict[k] 删除key键及对应的value值
>>> myDict
{'name': 'Simile', 1: 'one', 'float': 0.1, 0: 88, 99.9: 0.1}
>>> del myDict[1]
>>> myDict
{'name': 'Simile', 'float': 0.1, 0: 88, 99.9: 0.1}
2)D.pop(k[,d]) 删除key及对应的value值
3)D.popitem() 随机删除一对key键value值并返回,空dict字典会报错
4)D.clear() 清除dict字典所有key键value值
>>> myDict.clear()
>>> myDict
{}
5) del dict 彻底删除一个dict字典
>>> del myDict
>>> myDict
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'myDict' is not defined
八、dict字典其他常用方法
1)D.clear() 清除dict字典中的key键value值
>>> myDict.clear()
>>> myDict
{}
2)D.copy() 浅拷贝
>>> myDict = {'zero':0 , 'list':[2,4,6] , 10:'ten'}
>>> copyDict = myDict.copy()
>>> copyDict['zero'] = 'ling-0'
>>> copyDict
{'zero': 'ling-0', 'list': [2, 4, 6], 10: 'ten'}
>>> myDict
{'zero': 0, 'list': [2,4, 6], 10: 'ten'}
# 这里发现,'list'对应的值发生了改变
>>> copyDict['list'].remove(2)
>>> copyDict
{'zero': 'ling-0', 'list': [4, 6], 10: 'ten'}
>>> myDict
{'zero': 0, 'list': [4, 6], 10: 'ten'}
3)D.update([E, ]**F) 把一个字典的键值更新到另一个字典中
>>> dictA = {'CN':'+86','USA':'001'}
>>> dictB = {'City':'BeiJing'}
>>> dictA.update(dictB)
>>> dictA
{'CN': '+86', 'USA': '001', 'City': 'BeiJing'}
九、dict字典常用函数
1) len(dict)
>>> myDict = {'name':'Simile',1:'number','float':0.1,0:88,99.9:0.1}
>>> len(myDict)
5
2) str(dict)
>>> str(myDict)
"{'name': 'Simile', 1: 'number', 'float': 0.1, 0: 88, 99.9: 0.1}"
3)type(variable)
>>> type(myDict)
<class 'dict'>