如何在给定条件的情况下选择子字典

时间:2014-12-02 21:53:45

标签: python dictionary

mydict = {'a': {'name': 'Marco', 'gender': 'm', 'age': 38, 'info': 'teacher musician'}
          'b': {'name': 'Daniela', 'gender': 'f', 'age': 28, 'info': 'student music'}
          'c': {'name': 'Maria', 'gender': 'f', 'age': 25, 'info': 'doctor dance whatever'}}

如何选择年龄低于30且包含' music'在'信息'? 结果应该是:

newdict = {'b': {'name': 'Daniela', 'gender': 'f', 'age': 28, 'info': 'student music'}}

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用dict-comp:

mydict = {'a': {'name': 'Marco', 'gender': 'm', 'age': 38, 'info': 'teacher musician'},
          'b': {'name': 'Daniela', 'gender': 'f', 'age': 28, 'info': 'student music'},
          'c': {'name': 'Maria', 'gender': 'f', 'age': 25, 'info': 'doctor dance whatever'}}

new_dict = {k:v for k,v in mydict.iteritems() if v['age'] < 30 and 'music' in v['info'].split()}
# {'b': {'info': 'student music', 'gender': 'f', 'age': 28, 'name': 'Daniela'}}

答案 1 :(得分:0)

您可以使用以下理解:

>>> {d:k for d,k in mydict.items() if k['age']<30 and 'music' in k['info']}
{'b': {'info': 'student music', 'gender': 'f', 'age': 28, 'name': 'Daniela'}}

mydict.items()在每个循环中为你提供一个包含字典的键值的元组,你可以选择具有适当条件的项目!