Pythone3.X的dict字典

来源:互联网 发布:搜狐网络大厦it 编辑:程序博客网 时间:2024/06/06 20:44

字典自身是一个无序的可变容器,每个元素包含一对键值(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(键) 088>>> 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 countryCodeFalse>>> 'CN' in countryCodeTrue>>> 'USA' not in countryCodeFalse

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 +86USA +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>>> myDictTraceback (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': [24, 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'>