鱼C论坛

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

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

[复制链接]
发表于 2021-9-28 17:28:08 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2021-12-8 19:46:05 | 显示全部楼层
>>> ["改"]
['改']
>>> d = dict.fromkeys("FishC")
>>> d
{'F': None, 'i': None, 's': None, 'h': None, 'C': None}
>>> d["s"] = 115
>>> d
{'F': None, 'i': None, 's': 115, 'h': None, 'C': None}
>>> ["update([other]) 可以支持同时给它传入多个键值对,也可以直接给他传入另外一个字典,或者一个包含键值对的可迭代对象"]
['update([other]) 可以支持同时给它传入多个键值对,也可以直接给他传入另外一个字典,或者一个包含键值对的可迭代对象']
>>> d.update({"i":105,"h":104})
>>> d
{'F': None, 'i': 105, 's': 115, 'h': 104, 'C': None}
>>> d.update("F" = 70,"C "= 67)
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
>>> d.update(F ='70',C = '67')
>>> d
{'F': '70', 'i': 105, 's': 115, 'h': 104, 'C': '67'}
>>> d['C']
'67'
>>> d["c"]
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    d["c"]
KeyError: 'c'
>>> ["get(key[,default]) 方法,它可以存入一个default 参数,指定当找不到键的时候返回的值"]
['get(key[,default]) 方法,它可以存入一个default 参数,指定当找不到键的时候返回的值']
>>> d.get('c',"这里没有c")
'这里没有c'
>>> ["setdefault(key[,default]),当我们需要查找一个键是否存在于字典中,如果在,则返回它对应的值,如果不在,则给它指定一个新的值"]
['setdefault(key[,default]),当我们需要查找一个键是否存在于字典中,如果在,则返回它对应的值,如果不在,则给它指定一个新的值']
>>> d.setdefault('c','code')
'code'
>>> d.setdefault('C','code')
'67'
>>> ['items()   keys()    values()  这三个分别用于获取字典的键值对、键和值三者的视图对象        视图对象即字典的动态视图,这就意味着当字典的内容发生改变的时候,视图对象的内容也会相应地跟着改变。']
['items()   keys()    values()  这三个分别用于获取字典的键值对、键和值三者的视图对象        视图对象即字典的动态视图,这就意味着当字典的内容发生改变的时候,视图对象的内容也会相应地跟着改变。']
>>> d
{'F': '70', 'i': 105, 's': 115, 'h': 104, 'C': '67', 'c': 'code'}
>>> keys = d.keys()
>>> values = d.values()
>>> items = d.items()
>>> items
dict_items([('F', '70'), ('i', 105), ('s', 115), ('h', 104), ('C', '67'), ('c', 'code')])
>>> keys
dict_keys(['F', 'i', 's', 'h', 'C', 'c'])
>>> valuse
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    valuse
NameError: name 'valuse' is not defined
>>> values
dict_values(['70', 105, 115, 104, '67', 'code'])
>>> d.pop('c')
'code'
>>> items
dict_items([('F', '70'), ('i', 105), ('s', 115), ('h', 104), ('C', '67')])
>>> keys
dict_keys(['F', 'i', 's', 'h', 'C'])
>>> values
dict_values(['70', 105, 115, 104, '67'])
>>> e = d.copy()
>>> e
{'F': '70', 'i': 105, 's': 115, 'h': 104, 'C': '67'}
>>> ['copy()   也可以用于字典的浅拷贝']
['copy()   也可以用于字典的浅拷贝']
>>> len(d)
5
>>> 'C' in d
True
>>> 'c' not in d
True
>>> list(d)
['F', 'i', 's', 'h', 'C']
>>> lisy(d.values)
Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
    lisy(d.values)
NameError: name 'lisy' is not defined
>>> list(d.values)
Traceback (most recent call last):
  File "<pyshell#39>", line 1, in <module>
    list(d.values)
TypeError: 'builtin_function_or_method' object is not iterable
>>> list(d.values)
Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    list(d.values)
TypeError: 'builtin_function_or_method' object is not iterable
>>> list(d.values())
['70', 105, 115, 104, '67']
>>> e = iter(d)
>>> next(e)
'F'
>>> next(e)
'i'
>>> next(e)
's'
>>> next(e)
'h'
>>> next(e)
'C'
>>> next(e)
Traceback (most recent call last):
  File "<pyshell#48>", line 1, in <module>
    next(e)
StopIteration
>>> list(reversed(d.values()))
['67', 104, 115, 105, '70']
>>> ['嵌套']
['嵌套']
>>> d = {'吕布':{'语文':60,'数学':70,'英语':80},'小关关':{'语文':80,'数学':90,'英语':70}}
>>> d
{'吕布': {'语文': 60, '数学': 70, '英语': 80}, '小关关': {'语文': 80, '数学': 90, '英语': 70}}
>>> d['吕布']['数学']
70
>>> d = {'吕布':[60,70,80],'小关关':[80.90,70]}
>>> d['吕布'][1]
70
>>> ['上述即为字典嵌套序列']
['上述即为字典嵌套序列']
>>> d = {'F':70,'i':105,'s':115,'h':104,'C':67}
>>> b = {v:k for k,v in d.items()}
>>> b
{70: 'F', 105: 'i', 115: 's', 104: 'h', 67: 'C'}
>>> c = {v:k for k,v in d.items() if v > 100}
>>> c
{105: 'i', 115: 's', 104: 'h'}
>>> d = {x:ord(x) for x in "FishC"}
>>> d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
>>> ['ord() 函数用于返回 字符的 unicode 编码']
['ord() 函数用于返回 字符的 unicode 编码']
>>> d = {x:y for x in [1,3,5] for y in [2,4,6]}
>>> d
{1: 6, 3: 6, 5: 6}
>>> ['上述 依次返回‘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,  这即是字典的不可重复性']
>>> 
想知道小甲鱼最近在做啥?请访问 -> 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,  这即是字典的不可重复性']

太棒了,谢谢你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-16 10:52:21 | 显示全部楼层
好难啊这看不懂整不明白可怎么玩
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-19 16:12:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-21 10:23:54 | 显示全部楼层
今天也是跟着小甲鱼老师学习的一天
想知道小甲鱼最近在做啥?请访问 -> 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循环怎么拓展开来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-15 15:21:19 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-17 16:22:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-22 09:22:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-29 17:09:25 | 显示全部楼层
我裂开了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-9 15:47:28 | 显示全部楼层
滴滴滴~打卡
想知道小甲鱼最近在做啥?请访问 -> 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}
想知道小甲鱼最近在做啥?请访问 -> 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)
想知道小甲鱼最近在做啥?请访问 -> 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})
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-28 17:30:37 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-4 16:33:57 | 显示全部楼层
后面的动动手 有些搞不懂了   自己写不出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 15:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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