Python3第二十六课:字典,常用方法整理

  • A+
所属分类:Python学习

字典方法:

其实在写python小工具,通讯录小程序这篇内容的内容就已经搜索了字典的一些常用方法,不然也不会这么容易的把题目给做了的。

如何查字典有多少方法:

  1. dir(dict)
  1. ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

字典方法代码实例:

  • fromkeys()

支持两个参数,key和value,value默认值为None

  1. data = {}
  2. b = data.fromkeys((1,2,3),'你大爷')
  3. c = data.fromkeys((1,2,3),('one','two','three'))
  4. print(data,'\n',b,'\n',c)
  1. {}
  2.  {1: '你大爷', 2: '你大爷', 3: '你大爷'}
  3.  {1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

data的值始终未发生变化,value值为多项(内部是多项)是无法逐一映射到key,只能是一个key拥有多个一个项(多个值而已)。看c输出的结果。

  • 访问字典的方法--打印字典中的key
  1. data={}
  2. data1 = data.fromkeys(range(10),'赞')
  3. print(data1)
  4. for eachkey in data1.keys():
  5.     print(eachkey)
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  • 访问字典的方法--打印字典中的value
  1. data={}
  2. data1 = data.fromkeys(range(10),'赞')
  3. print(data1)
  4. for eachkey in data1.values():
  5.     print(eachkey)

 

  • 访问字典的方法--打印字典中的全部内容
  1. data={}
  2. data1 = data.fromkeys(range(10),'赞')
  3. print(data1)
  4. for eachkey in data1.items():
  5.     print(eachkey)
  1. (0, '赞')
  2. (1, '赞')
  3. (2, '赞')
  4. (3, '赞')
  5. (4, '赞')
  6. (5, '赞')
  7. (6, '赞')
  8. (7, '赞')
  9. (8, '赞')
  10. (9, '赞')
  • get()

返回指定键的值,支持两个参数,key和返回内容默认是None

  1. data={}
  2. data1 = data.fromkeys(range(3),'赞')
  3. print(data1)
  4. for eachkey in data1.items():
  5.     print(eachkey)
  6. print(data1.get(11,'不在'))
  1. {0: '赞', 1: '赞', 2: '赞'}
  2. (0, '赞')
  3. (1, '赞')
  4. (2, '赞')
  5. 不在

只生成了3个key,所以找不到11那个key,返回设定的内容。

扩展阅读,判断键是否在这个字典中,也可以使用成员运算符( in not in)

  • clear()
  1. data={}
  2. data1 = data.fromkeys(range(3),'赞')
  3. print(data1)
  4. data1.clear()
  5. print(data1)

直接重置字典与clear的区别

  1. data={}
  2. data1 = data.fromkeys(range(3),'赞')
  3. print(data1)
  4. data2 = data1
  5. print(data1,'这里要分开第一次',data2)
  6. data1 ={}
  7. print(data1,'这里要分开第二次',data2)
  1. {0: '赞', 1: '赞', 2: '赞'}
  2. {0: '赞', 1: '赞', 2: '赞'} 这里要分开第一次 {0: '赞', 1: '赞', 2: '赞'}
  3. {} 这里要分开第二次 {0: '赞', 1: '赞', 2: '赞'}
  • pop()

删除指定给定键所对应的值,返回这个值并从字典中把它移除。支持两个值,键与返回值(如key不在内容中返回这个内容)

  1. data={}
  2. data1 = data.fromkeys(range(3),'赞')
  3. print(data1,data1.pop(1,'我特么要把你给删除')) #{0: '赞', 2: '赞'} 赞
  4. print(data1,data1.pop(6,'我特么要把你给删除')) #{0: '赞', 2: '赞'} 我特么要把你给删除
  5. print(data1) #{0: '赞', 2: '赞'}
  • popitem()

随机返回并删除字典中的一对键和值(项),在测试中发现key如果为整形的条件下(1,2,3,4,5,6且不能断开),删除是按顺序删除的。

  1. data={1: '1赞', 2: '2赞', 3: '赞3', 4: '4赞', 5: '5赞', 6: '6赞'}
  2. b = data.popitem()
  3. print(data,b)
  1. (1, '1赞')
  2. (2, '2赞')
  3. (3, '赞3')
  4. (4, '4赞')
  5. (5, '5赞')
  6. (6, '6赞')

如果Key是非整型外,其他的则是跟与其他人说的相同的

  • setdefault()

和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

  1. data ={'李金龙':180,'博客':'0800','菜鸟':'2953',}
  2. print(data.setdefault('李总','联系方式')) #查不到数据,返回'联系方式',并增加字典key为李总,value为联系方式
  3. print(data)
  4. print(data.setdefault('王总'))  #查不到数据,返回默认值'None',并增加字典key为李总,value为'None'
  5. print(data)
  1. 联系方式
  2. {'李金龙': 180, '博客': '0800', '菜鸟': '2953', '李总': '联系方式'}
  3. None
  4. {'李金龙': 180, '王总': None, '博客': '0800', '菜鸟': '2953', '李总': '联系方式'}

 

  • update()

函数把字典dict2的键/值对更新到dict里,类似于相加

  1. data = {1: '1赞', 2: '2赞', 3: '赞3', 4: '4赞', 5: '5赞', 6: '6赞'}
  2. data2 = {12: '1赞', 17: '2赞', 31: '赞3', 24: '4赞', 15: '5赞', 64: '6赞'}
  3. data2.update(data)
  4. print(data2)
  5. #{64: '6赞', 1: '1赞', 2: '2赞', 3: '赞3', 4: '4赞', 5: '5赞', 6: '6赞', 12: '1赞', 15: '5赞', 17: '2赞', 24: '4赞', 31: '赞3'}

 

 


单词扩展:

  • clear:清除(在css中,有清除浮动的用途)

扩展阅读:


版权注释:

Python课程来源于鱼C论坛:http://bbs.fishc.com/forum-243-1.html 版块,课程内容为免费内容,如果你喜欢该课程,建议购买VIP账号支持小甲鱼,官方网店:https://fishc.taobao.com/)。

本内容为在李金龙在学习课程中做的日记记录,方便自己以后查找相关信息,另一方面也希望自己写下的东西可以帮助到别人。

课程内容:http://blog.fishc.com/3156.html

李金龙

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: