python词典myd问题

2024-09-28 23:11:02 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一个将名字作为键,年龄作为值的字典: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弱。我理解每个问题都在问什么,只是不知道如何为每个问题制定一个工作代码。任何人可以帮助我修复我的代码将不胜感激!你知道吗


Tags: 代码for字典字母名字学生zack年龄
2条回答

A

myg = {}
for key in myf:
  if key[0] not in {'A','R','S'}: myg[key] = myf[key]

B类

myf1 = {}
myf2 = {}
for key in myf:
 if key[0] >= 'M' and myf[key] <= 10: 
  myf1[key] = myf[key]
 else: myf2[key] = myf[key]

解决方案:

>>> 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会得到一个空的dict,我把它改为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}

相关问题 更多 >