vincentpl 发表于 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'..}
为什么是互换呢?

xiaoxiangx 发表于 2023-1-13 13:07:37

打卡

Wynn_0303 发表于 2023-1-31 18:21:51

打卡

学爬虫的先生 发表于 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()
对字典可以做的事情
        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())

        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()))

嵌套
        写法
                >>> d = {"吕布": {"语文":60, "数学":70, "英语":80}, "关羽": {"语文":80, "数学":90, "英语":70}}
        获取嵌套索引
                >>> d["吕布"]["数学"]
70
        嵌套里的也可能是列表的索引
                >>> d = {"吕布": , "关羽": }
第二次索引,我们当然也得换成下标索引:
>>> d["吕布"]
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}

littlewhale 发表于 2023-3-16 20:37:18

打卡~~~

来自成都的momo 发表于 2023-4-11 16:32:32

一道练习做两个小时正常吗{:10_266:}{:10_266:}{:10_266:}

2573254148 发表于 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
    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==chaxun:
                num=i
      print("电影名称:",end="")
      for j in mc:
            print(j,end="")
      print()
      print("上映时间:",end="")
      for j in rq:
            print(j,end="")
      print()
      print("导演名单:",end="")
      print(dy)
      print("演员名单:",end="")
      print(yy)
      print("当前评分:",end="")
      for j in pf:
            print(j,end="")
      print()


print("感谢你的使用!")

鑫xx 发表于 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)

仲禾 发表于 2024-1-16 14:58:25

打卡,差点忘了字典的不可重复

Tshirt 发表于 2025-5-20 11:28:59

请问最后一个字典推导式,d={x:y for x in for y in },为什么结果是只有3个项而不是9个项啊

万恶的亚撒西 发表于 2025-5-29 17:08:11

难难难,反复学习--20250529
页: 1 [2]
查看完整版本: 第038讲:字典(下)