python词典myd问题

时间:2015-11-30 02:49:24

标签: python string dictionary

考虑一个字典,将名字作为键和年龄保持为值: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弱。我理解每个问题的含义,我只是不确定如何为每个问题制定一个有效的代码。任何能帮我修改代码的人都将不胜感激!

2 个答案:

答案 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]