如何在给定条件下选择子词典

Fra*_*nco 1 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'}}
Run Code Online (Sandbox Code Playgroud)

如何筛选年龄在30岁以下且“信息”中包含“音乐”字样的记录?结果应该是这样的:

newdict = {'b': {'name': 'Daniela', 'gender': 'f', 'age': 28, 'info': 'student music'}}
Run Code Online (Sandbox Code Playgroud)

Jon*_*nts 6

最简单的方法是使用 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'}}
Run Code Online (Sandbox Code Playgroud)