2014-12-02 59 views
-1
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和的話,包括在「信息」「音樂」的年齡選擇記錄? 結果應該是這樣的:如何選擇給定的條件

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

回答

1

最簡單的方法是使用一個字典-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'}} 
+0

@Franco它是*字典理解的簡稱* - 它使用可選的if條款從另一個迭代構建字典 - 這是您將所需的其他條件應用於其中的位置 – 2014-12-02 22:04:52

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()給你一個元組包含每個循環的字典的鍵值,並且您可以選擇具有適當條件的項目!