码迷,mamicode.com
首页 > 其他好文 > 详细

pythopn Dictionary(字典)

时间:2018-01-11 01:11:25      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:其他   北京   upd   copy   efault   内建函数   mac   name   class   

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根 据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可 变类型,如:数字、字符串、元组。 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对 象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 创建字典: >>> dic1={‘name‘:‘n‘,‘age‘:36,‘sex‘:‘male‘} >>> dic2=dict(((‘name‘,‘n‘),)) >>> print(dic1) #{‘name‘: ‘n‘, ‘age‘: 36, ‘sex‘: ‘male‘} >>> print(dic2) #{‘name‘: ‘n‘} 对应操作: 1 增 >>> dic={} >>> dic[‘name‘] = ‘n‘ >>> dic[‘age‘] = 18 >>> print(dic) # {‘name‘: ‘n‘, ‘age‘: 18} #setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。 >>> a = dic.setdefault(‘name‘, ‘yuan‘) >>> b = dic.setdefault(‘ages‘, 22) >>> b = dic.setdefault(‘ages‘, 22) >>> c = dic.setdefault(‘hobby‘, "girl") >>> print(a, b, c) # n 22 girl >>> print(dic) # {‘name‘: ‘n‘, ‘age‘: 18, ‘ages‘: 22} 2 查 >>> dic= {‘name‘: ‘n‘, ‘age‘: 18} >>> print(dic[‘name‘]) # n #get() 函数返回指定键的值,如果值不在字典中返回默认值。 >>> print(dic.get(‘age‘,False)) # 18 >>> print(dic.get(‘ages‘,False)) # False >>> print(dic.items()) # dict_items([(‘name‘, ‘n‘), (‘age‘, 18)]) >>> print(dic.keys()) # dict_keys([‘name‘, ‘age‘]) >>> print(dic.values()) # dict_values([‘n‘, 18]) >>> print(‘name‘ in dic) # True >>> print(list(dic.values())) # [‘n‘, 18] 3 改 >>> dic = {‘name‘: ‘n‘, ‘age‘: 18} >>> print(dic) # {‘name‘: ‘n‘, ‘age‘: 18} >>> dic[‘name‘] = ‘al‘ >>> print(dic) # {‘name‘: ‘al‘, ‘age‘: 18} >>> dic1 = {‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘, ‘age‘: 36} #update()方法添加键 - 值对到字典dict1。此函数不返回任何值。 >>> dic.update(dic1) >>> print(dic) # {‘name‘: ‘al‘, ‘age‘: 36, ‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘} 4 删 >>> dic = {‘name‘: ‘n‘, ‘age‘: 18, ‘class‘: 1} >>> #dic.clear() # 清空字典 >>> #print(dic) # {} >>> del dic[‘name‘] #del 根据键删除 >>> print(dic) # {‘age‘: 18, ‘class‘: 1} >>> a = dic.popitem() >>> print(a, dic) # (‘class‘, 1) {‘age‘: 18} >>> print(dic.pop(‘age‘)) # 18 >>> print(dic) # {} >>> del dic # 删除整个dic >>> print(dic) #NameError: name ‘dic4‘ is not defined 5 其他操作以及涉及到的方法 5.1 dict.fromkeys #fromkeys()方法从序列键和值设置为value来创建一个新的字典。 >>> d1=dict.fromkeys([‘host1‘,‘host2‘,‘host3‘],‘Mac‘) >>> print(d1) #{‘host1‘: ‘Mac‘, ‘host2‘: ‘Mac‘, ‘host3‘: ‘Mac‘} >>> d1[‘host1‘]=‘xiaomi‘ >>> print(d1) #{‘host1‘: ‘xiaomi‘, ‘host2‘: ‘Mac‘, ‘host3‘: ‘Mac‘} >>> d2=dict.fromkeys([‘host1‘,‘host2‘,‘host3‘],[‘Mac‘,‘huawei‘]) >>> print(d2) # {‘host1‘: [‘Mac‘, ‘huawei‘], ‘host2‘: [‘Mac‘, ‘huawei‘], ‘host3‘: [‘Mac‘, ‘huawei‘]} >>> d2[‘host1‘][0]=‘xiaomi‘ >>> print(d2) #{‘host1‘: [‘xiaomi‘, ‘huawei‘], ‘host2‘: [‘xiaomi‘, ‘huawei‘], ‘host3‘: [‘xiaomi‘, ‘huawei‘]} 5.2 d.copy() 对字典 d 进行浅复制,返回一个和d有相同键值对的新字典 >>> dic1=dic.copy() >>> print(dic) # {‘name‘: ‘n‘, ‘age‘: 18, ‘class‘: 1} >>> print(dic1) # {‘name‘: ‘n‘, ‘age‘: 18, ‘class‘: 1} >>> dic1[‘name‘]=‘n1‘ >>> print(dic) # {‘name‘: ‘n‘, ‘age‘: 18, ‘class‘: 1} >>> print(dic1) # {‘name‘: ‘n1‘, ‘age‘: 18, ‘class‘: 1} 5.3 字典的嵌套 >>> { >>> ‘北京‘:{ >>> ‘朝阳‘:{ >>> ‘国贸‘:{ >>> ‘CICC‘:{}, >>> ‘HP‘:{}, >>> }, >>> ‘望京‘:{ >>> ‘沫沫‘:{}, >>> }, >>> }, >>> ‘昌平‘:{ >>> ‘沙河‘:{ >>> ‘老男孩‘:{}, >>> ‘包子‘:{}, >>> }, >>> ‘链家‘:{}, >>> ‘我爱我家‘:{}, >>> }, >>> ‘回龙观‘:{}, >>> >>> }, >>> }, >>> ‘上海‘:{ >>> ‘浦东‘:{ >>> ‘陆家嘴‘:{ >>> ‘cicc‘:{}, >>> ‘高盛‘:{}, >>> }, >>> ‘外滩‘:{}, >>> }, >>> ‘闵行‘:{} >>> }, >>> } 5.4 sorted(dict) : 返回一个有序的包含字典所有key的列表 >>> dic={5:‘555‘,2:‘222‘,4:‘444‘} >>> print(dic) #{5: ‘555‘, 2: ‘222‘, 4: ‘444‘} #sorted() 函数对所有可迭代的对象进行排序操作。 sort 与 sorted 区别: #sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 #list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list, #而不是在原来的基础上进行的操作。 >>> print(sorted(dic)) #[2, 4, 5] 5.5 字典的遍历   >>> dic5 = {‘name‘: ‘n‘, ‘age‘: 18} >>> for i in dic5: >>> print(i, dic5[i]) # name n age 18 >>> for items in dic5.items(): >>> print(items) # (‘name‘, ‘n‘) (‘age‘, 18) >>> for keys, values in dic5.items(): >>> print(keys, values) # name n age 18    还用我们上面的例子,存取这个班学生的信息,我们如果通过字典来完成,那: >>> dic={‘zhangsan‘:{‘age‘:23,‘sex‘:‘male‘}, >>> ‘李四‘:{‘age‘:33,‘sex‘:‘male‘}, >>> ‘wangwu‘:{‘age‘:27,‘sex‘:‘women‘} >>> } >>> print(dic) #dic={ #‘zhangsan‘:{‘age‘:23,‘sex‘:‘male‘},‘ # 李四‘:{‘age‘:33,‘sex‘:‘male‘}, # ‘wangwu‘:{‘age‘:27,‘sex‘:‘women‘} #}

pythopn Dictionary(字典)

标签:其他   北京   upd   copy   efault   内建函数   mac   name   class   

原文地址:http://blog.51cto.com/13562606/2059652

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!