鱼C论坛

 找回密码
 立即注册
查看: 9763|回复: 28

[知识点备忘] 第038讲:字典(下)

[复制链接]
发表于 2021-9-28 17:28:08 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-28 09:37:37 | 显示全部楼层
本节继续介绍字典的方法,讲解了有关改(update())、查(get()、setdefault())、获取视图对象(items()、keys()、values())和浅拷贝(copy())的总共7个方法及其相关操作。视图对象是字典的动态视图,会随着字典内容的改变而改变,很神奇的样子!视频还讲了字典的其他操作,如获取字典长度、字典转换列表、迭代遍历、嵌套等,还可以使用reversed()函数对字典进行逆向排序(仅限Python3.8之后的版本)。最后还讲解了字典推导式,其与列表推导式原理类似,触类旁通!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-11-22 16:54:50 From FishC Mobile | 显示全部楼层
课上截图
E9B7C5FB-C5F6-4825-888E-DCEA23B6780E.jpeg
F7C7E95E-83FE-47EA-A927-8ACD83C48845.jpeg
9FADAF46-F35F-4286-9D25-FC6917280474.jpeg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-8 19:46:05 | 显示全部楼层
  1. >>> ["改"]
  2. ['改']
  3. >>> d = dict.fromkeys("FishC")
  4. >>> d
  5. {'F': None, 'i': None, 's': None, 'h': None, 'C': None}
  6. >>> d["s"] = 115
  7. >>> d
  8. {'F': None, 'i': None, 's': 115, 'h': None, 'C': None}
  9. >>> ["update([other]) 可以支持同时给它传入多个键值对,也可以直接给他传入另外一个字典,或者一个包含键值对的可迭代对象"]
  10. ['update([other]) 可以支持同时给它传入多个键值对,也可以直接给他传入另外一个字典,或者一个包含键值对的可迭代对象']
  11. >>> d.update({"i":105,"h":104})
  12. >>> d
  13. {'F': None, 'i': 105, 's': 115, 'h': 104, 'C': None}
  14. >>> d.update("F" = 70,"C "= 67)
  15. SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
  16. >>> d.update(F ='70',C = '67')
  17. >>> d
  18. {'F': '70', 'i': 105, 's': 115, 'h': 104, 'C': '67'}
  19. >>> d['C']
  20. '67'
  21. >>> d["c"]
  22. Traceback (most recent call last):
  23.   File "<pyshell#12>", line 1, in <module>
  24.     d["c"]
  25. KeyError: 'c'
  26. >>> ["get(key[,default]) 方法,它可以存入一个default 参数,指定当找不到键的时候返回的值"]
  27. ['get(key[,default]) 方法,它可以存入一个default 参数,指定当找不到键的时候返回的值']
  28. >>> d.get('c',"这里没有c")
  29. '这里没有c'
  30. >>> ["setdefault(key[,default]),当我们需要查找一个键是否存在于字典中,如果在,则返回它对应的值,如果不在,则给它指定一个新的值"]
  31. ['setdefault(key[,default]),当我们需要查找一个键是否存在于字典中,如果在,则返回它对应的值,如果不在,则给它指定一个新的值']
  32. >>> d.setdefault('c','code')
  33. 'code'
  34. >>> d.setdefault('C','code')
  35. '67'
  36. >>> ['items()   keys()    values()  这三个分别用于获取字典的键值对、键和值三者的视图对象        视图对象即字典的动态视图,这就意味着当字典的内容发生改变的时候,视图对象的内容也会相应地跟着改变。']
  37. ['items()   keys()    values()  这三个分别用于获取字典的键值对、键和值三者的视图对象        视图对象即字典的动态视图,这就意味着当字典的内容发生改变的时候,视图对象的内容也会相应地跟着改变。']
  38. >>> d
  39. {'F': '70', 'i': 105, 's': 115, 'h': 104, 'C': '67', 'c': 'code'}
  40. >>> keys = d.keys()
  41. >>> values = d.values()
  42. >>> items = d.items()
  43. >>> items
  44. dict_items([('F', '70'), ('i', 105), ('s', 115), ('h', 104), ('C', '67'), ('c', 'code')])
  45. >>> keys
  46. dict_keys(['F', 'i', 's', 'h', 'C', 'c'])
  47. >>> valuse
  48. Traceback (most recent call last):
  49.   File "<pyshell#25>", line 1, in <module>
  50.     valuse
  51. NameError: name 'valuse' is not defined
  52. >>> values
  53. dict_values(['70', 105, 115, 104, '67', 'code'])
  54. >>> d.pop('c')
  55. 'code'
  56. >>> items
  57. dict_items([('F', '70'), ('i', 105), ('s', 115), ('h', 104), ('C', '67')])
  58. >>> keys
  59. dict_keys(['F', 'i', 's', 'h', 'C'])
  60. >>> values
  61. dict_values(['70', 105, 115, 104, '67'])
  62. >>> e = d.copy()
  63. >>> e
  64. {'F': '70', 'i': 105, 's': 115, 'h': 104, 'C': '67'}
  65. >>> ['copy()   也可以用于字典的浅拷贝']
  66. ['copy()   也可以用于字典的浅拷贝']
  67. >>> len(d)
  68. 5
  69. >>> 'C' in d
  70. True
  71. >>> 'c' not in d
  72. True
  73. >>> list(d)
  74. ['F', 'i', 's', 'h', 'C']
  75. >>> lisy(d.values)
  76. Traceback (most recent call last):
  77.   File "<pyshell#38>", line 1, in <module>
  78.     lisy(d.values)
  79. NameError: name 'lisy' is not defined
  80. >>> list(d.values)
  81. Traceback (most recent call last):
  82.   File "<pyshell#39>", line 1, in <module>
  83.     list(d.values)
  84. TypeError: 'builtin_function_or_method' object is not iterable
  85. >>> list(d.values)
  86. Traceback (most recent call last):
  87.   File "<pyshell#40>", line 1, in <module>
  88.     list(d.values)
  89. TypeError: 'builtin_function_or_method' object is not iterable
  90. >>> list(d.values())
  91. ['70', 105, 115, 104, '67']
  92. >>> e = iter(d)
  93. >>> next(e)
  94. 'F'
  95. >>> next(e)
  96. 'i'
  97. >>> next(e)
  98. 's'
  99. >>> next(e)
  100. 'h'
  101. >>> next(e)
  102. 'C'
  103. >>> next(e)
  104. Traceback (most recent call last):
  105.   File "<pyshell#48>", line 1, in <module>
  106.     next(e)
  107. StopIteration
  108. >>> list(reversed(d.values()))
  109. ['67', 104, 115, 105, '70']
  110. >>> ['嵌套']
  111. ['嵌套']
  112. >>> d = {'吕布':{'语文':60,'数学':70,'英语':80},'小关关':{'语文':80,'数学':90,'英语':70}}
  113. >>> d
  114. {'吕布': {'语文': 60, '数学': 70, '英语': 80}, '小关关': {'语文': 80, '数学': 90, '英语': 70}}
  115. >>> d['吕布']['数学']
  116. 70
  117. >>> d = {'吕布':[60,70,80],'小关关':[80.90,70]}
  118. >>> d['吕布'][1]
  119. 70
  120. >>> ['上述即为字典嵌套序列']
  121. ['上述即为字典嵌套序列']
  122. >>> d = {'F':70,'i':105,'s':115,'h':104,'C':67}
  123. >>> b = {v:k for k,v in d.items()}
  124. >>> b
  125. {70: 'F', 105: 'i', 115: 's', 104: 'h', 67: 'C'}
  126. >>> c = {v:k for k,v in d.items() if v > 100}
  127. >>> c
  128. {105: 'i', 115: 's', 104: 'h'}
  129. >>> d = {x:ord(x) for x in "FishC"}
  130. >>> d
  131. {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
  132. >>> ['ord() 函数用于返回 字符的 unicode 编码']
  133. ['ord() 函数用于返回 字符的 unicode 编码']
  134. >>> d = {x:y for x in [1,3,5] for y in [2,4,6]}
  135. >>> d
  136. {1: 6, 3: 6, 5: 6}
  137. >>> ['上述 依次返回‘1:2,1:4’,但是 1:4 会将 1:2 替换,因此最后返回 1:6,同理返回 3:6, 5:6,  这即是字典的不可重复性']
  138. ['上述 依次返回‘1:2,1:4’,但是 1:4 会将 1:2 替换,因此最后返回 1:6,同理返回 3:6, 5:6,  这即是字典的不可重复性']
  139. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-8 20:45:34 | 显示全部楼层
'上述 依次返回‘1:2,1:4’,但是 1:4 会将 1:2 替换,因此最后返回 1:6,同理返回 3:6, 5:6,  这即是字典的不可重复性']
['上述 依次返回‘1:2,1:4’,但是 1:4 会将 1:2 替换,因此最后返回 1:6,同理返回 3:6, 5:6,  这即是字典的不可重复性']

太棒了,谢谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-16 10:52:21 | 显示全部楼层
好难啊这看不懂整不明白可怎么玩
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-19 16:12:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-5-21 10:23:54 | 显示全部楼层
今天也是跟着小甲鱼老师学习的一天
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 16:05:54 | 显示全部楼层
k3 = {x:y for x in (1,3,5) for y in (2,4,6)}
print(k3)
我想问下这个字典推导式,写成for循环怎么拓展开来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-15 15:21:19 | 显示全部楼层
打卡
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-17 16:22:46 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-22 09:22:13 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-29 17:09:25 | 显示全部楼层
我裂开了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 15:47:28 | 显示全部楼层
滴滴滴~打卡
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 16:09:02 | 显示全部楼层
响鸟 发表于 2022-8-5 16:05
k3 = {x:y for x in (1,3,5) for y in (2,4,6)}
print(k3)
我想问下这个字典推导式,写成for循环怎么拓展 ...

>>> for x in [1,3,5]:
        for y in [2,4,6]:
                d = {x:y}
        print(d)

       
{1: 6}
{3: 6}
{5: 6}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 15:12:45 | 显示全部楼层
响鸟 发表于 2022-8-5 16:05
k3 = {x:y for x in (1,3,5) for y in (2,4,6)}
print(k3)
我想问下这个字典推导式,写成for循环怎么拓展 ...

for x in (1,3,5):
    for y in (2,4,6):
        k3.update({x:y})
print(k3)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 15:15:59 | 显示全部楼层
墨墨在努力吖 发表于 2022-10-9 16:09
>>> for x in [1,3,5]:
        for y in [2,4,6]:
                d = {x:y}

d = {x:y} 会在循环中被覆盖,最后d = {5:6},字典推导式的结果是d = {1:6,3:6,5:6}.应该用d.update({x:y})
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 21:14:11 | 显示全部楼层
呀呀呀呀


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-28 17:30:37 | 显示全部楼层
打卡
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-1-4 16:33:57 | 显示全部楼层
后面的动动手 有些搞不懂了   自己写不出来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-19 04:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表