>>> b = {v:k for k,v in d.items()}
求解:
为什么 b 这里执行完后 是V和K 互换,
b 不是指 取出d中 key 和value 存入到k和v 两个变量, 然后对变量v 赋值 k吗
那应该执行后{'F':'F','i':'i'..}
为什么是互换呢?
打卡 打卡 查
通过键查找对应的值
>>> 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}
打卡~~~ 一道练习做两个小时正常吗{:10_266:}{:10_266:}{:10_266:} 动动手
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("感谢你的使用!")
响鸟 发表于 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) 打卡,差点忘了字典的不可重复 请问最后一个字典推导式,d={x:y for x in for y in },为什么结果是只有3个项而不是9个项啊 难难难,反复学习--20250529
页:
1
[2]