考虑一个字典,将名字作为键和年龄保持为值:myf = {“Amy”:19,“Mary”:18,“Bill”:21,“Cate”:23,“Zack”:20 }
A)编写一个python代码,它将创建一个新的字典myg,它不包含学生,其名称以字母“A”或“M”或“S”开头。
B)将字典myf分成两个字典myf1和myf2,使myf1只包含年龄小于等于10且名字以字母“M-Z”开头的学生,而myf2包含其余字母。
These are my attempts:
A) n = len(myf)
for i = 1:n
if myf[i] = "A", "R", "S"
B) myf = myf1 + myf2
for i in myf1
myf1 = myf <= 10
else:
myf2
我对A的理解比B弱。我理解每个问题的含义,我只是不确定如何为每个问题制定一个有效的代码。任何能帮我修改代码的人都将不胜感激!
答案 0 :(得分:1)
A的解决方案:
>>> dict((key, value) for key, value in myf.items() if key[0] not in ['A', 'M', 'S'])
>>> myg
{'Bill': 21, 'Zack': 20, 'Cate': 23}
B的解决方案(注意:年龄小于等于10将得到一个空的字典,我将它改为20,这样你就可以更好地了解实际结果应该如何)
>>> import string
>>> mtoz = string.ascii_uppercase[12:]
>>> mtoz
'MNOPQRSTUVWXYZ'
>>> myf1 = dict((key, value) for key, value in myf.items() if key[0] in mtoz and value <= 20)
>>> myf1
{'Mary': 18, 'Zack': 20}
>>> myf2 = dict(item for item in myf.items() if item not in myf1.items())
>>> myf2
{'Amy': 19, 'Bill': 21, 'Cate': 23}
答案 1 :(得分:0)
A
myg = {}
for key in myf:
if key[0] not in {'A','R','S'}: myg[key] = myf[key]
乙
myf1 = {}
myf2 = {}
for key in myf:
if key[0] >= 'M' and myf[key] <= 10:
myf1[key] = myf[key]
else: myf2[key] = myf[key]