鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 小甲鱼

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

[复制链接]
发表于 2023-1-8 15:56:22 | 显示全部楼层
>>> d = {'F':70, 'i':105, 's':115, 'h':104, 'C':67}
>>> b = {v:k for k,v in d.items()}
求解:
为什么 b 这里执行完后 是V和K 互换,
b 不是指 取出d中 key 和value 存入到k和v 两个变量, 然后对变量v 赋值 k吗
那应该执行后{'F':'F','i':'i'..}
为什么是互换呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2023-2-25 12:07:48 | 显示全部楼层

        通过键查找对应的值
                >>> d['C']
67
        get()方法,传入一个 default 参数,指定找不到键时返回的值
                >>> d.get('c', "这里没有c")
'这里没有c'
        setdefault 查找存在的键,如果不存在就新建一个键和值
                >>> d.setdefault('C', "code")
67
>>> d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
>>> d.setdefault('c', "code")
'code'
>>> d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67, 'c': 'code'}
视图对象
        items() 查找键值对
                items = d.items()
items
dict_items([('F', 70), ('i', 105), ('s', 115), ('h', 104), ('C', 67), ('c', 'code')])
        keys() 查找键
                keys = d.keys()
keys
dict_keys(['F', 'i', 's', 'h', 'C', 'c'])
        values() 查找值
                values = d.values()
values
dict_values([70, 105, 115, 104, 67, 'code'])
对字典可以做的事情
        len() 函数来获取字典的键值对数量
                >>> len(d)
5
        使用 in 和 not in 来判断某个键是否存在于字典中:
                >>> 'C' in d
True
>>> 'c' not in d
True
        list 转换列表
                >>> list(d)
['F', 'i', 's', 'h', 'C']
                >>> list(d.values())
[70, 105, 115, 104, 67]
        iter() 函数 将字典的键构成一个迭代器
                >>> 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#15>", line 1, in <module>
    next(e)
StopIteration
         reversed() 函数对字典内部的键值对进行逆向操作
                >>> list(reversed(d))
['C', 'h', 's', 'i', 'F']
                >>> list(reversed(d.values()))
[67, 104, 115, 105, 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'}
>>> d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
        筛选条件
                >>> 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}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-16 20:37:18 | 显示全部楼层
打卡~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-11 16:32:32 | 显示全部楼层
一道练习做两个小时正常吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-12 19:31:38 | 显示全部楼层
动动手
0.
#摩斯密码的实现
morse_code = {
    'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....',
    'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.',
    'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
    'Y': '-.--', 'Z': '--..',
    '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....',
    '6': '-....', '7': '--...', '8': '---..', '9': '----.'

}


plain = list(input("请输入需要加密的明文(只支持英文字母):"))
key = int(input("请输入移动的位数:"))
   
base_A = ord('A')
base_a = ord('a')
   
cipher = []
for each in plain:
    if each == ' ':
        cipher.append(' ')
    else:
        if each.isupper():
            base = base_A
        else:
            base = base_a
        cipher.append(chr((ord(each) - base + key) % 26 + base))
print("凯撒加密后的密文是:",end=" ")   
print(''.join(cipher))
m=[]
for i in cipher:
    if i.islower():
        i=i.upper()
    i=morse_code[i]
    m.append(i)
print("凯撒、摩斯混合加密后的密文是:",''.join(m))

1.
print("欢迎进入鱼C影评小程序")
print("1.数据录入")
print("2.查询数据")
print("3.退出程序")

gongneng=1
mc=[]
rq=[]
dy=[]
yy=[]
pf=[]

while(gongneng!=3):
    gongneng=int(input("请输入想要的功能(1/2/3):"))
    if gongneng == 1:
        goon="Y"
        while(goon!="N"):
            mingcheng=input("请输入电影名称:")
            riqi=input("请输入上映日期:")
            daoyan=input("请输入导演名字(多人请用 / 分隔):")
            yanyuan=input("请输入演员名字(多人请用 / 分隔):")
            pingfen=input("请输入电影评分:")
            goon=input("请问是否继续录入(Y/N):")
            mc.append(mingcheng)
            rq.append(riqi)
            dy.append(daoyan.split("/"))
            yy.append(yanyuan.split("/"))
            pf.append(pingfen)
   
    elif gongneng == 2:
        num=0
        chaxun=input("请输入电影名称:")
        for i in range(len(mc)):
            if mc[i]==chaxun:
                num=i
        print("电影名称:",end="")
        for j in mc[num]:
            print(j,end="")
        print()
        print("上映时间:",end="")
        for j in rq[num]:
            print(j,end="")
        print()
        print("导演名单:",end="")
        print(dy[num])
        print("演员名单:",end="")
        print(yy[num])
        print("当前评分:",end="")
        for j in pf[num]:
            print(j,end="")
        print()

  
print("感谢你的使用!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-5 23:14:27 | 显示全部楼层
响鸟 发表于 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):
        dic=dict({x:y})
    print(dic)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-16 14:58:25 | 显示全部楼层
打卡,差点忘了字典的不可重复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 20:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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