2017-11-06 9 views
0

だから私はこの辞書がありますのみ評価>=私が選択したものを持って映画を示す、フィルタリングネストされた辞書

Filme = {'1': {'Titel': 20, 'Jahr': 2, 'Wertung': 6, 'Preis': 50, 'Schauspielern': ['a', 'b', 'c']}, 
     '2': {'Titel': 30, 'Jahr': 3, 'Wertung': 7, 'Preis': 70, 'Schauspielern': ['']}, 
     '3': {'Titel': 10, 'Jahr': 2, 'Wertung': 6, 'Preis': 10, 'Schauspielern': ['']}, 
     '4': {'Titel': 5, 'Jahr': 3, 'Wertung': 9, 'Preis': 20, 'Schauspielern': ['']}, 
     '5': {'Titel': 8, 'Jahr': 3, 'Wertung': 10, 'Preis': 100, 'Schauspielern': ['']}, 
     '6': {'Titel': 20, 'Jahr': 2, 'Wertung': 6, 'Preis': 10, 'Schauspielern': ['']}, 
     '7': {'Titel': 16, 'Jahr': 3, 'Wertung': 9, 'Preis': 20, 'Schauspielern': ['']}, 
     '8': {'Titel': 20, 'Jahr': 2, 'Wertung': 6, 'Preis': 10, 'Schauspielern': ['']}, 
     '9': {'Titel': 90, 'Jahr': 3, 'Wertung': 9, 'Preis': 20, 'Schauspielern': ['']}, 
     '10': {'Titel': 10, 'Jahr': 2, 'Wertung': 6, 'Preis': 10, 'Schauspielern': ['']} 
     } 

を、私はWertung(定格)に基づいて、それをフィルタリングする必要があります。 私はPython Programmingのかなり初心者ですが、どうすればいいのでしょうか。

In [2]: {k:v for k,v in Filme.items() if v['Wertung'] >= 7} 
Out[2]: 
{'2': {'Jahr': 3, 
    'Preis': 70, 
    'Schauspielern': [''], 
    'Titel': 30, 
    'Wertung': 7}, 
'4': {'Jahr': 3, 
    'Preis': 20, 
    'Schauspielern': [''], 
    'Titel': 5, 
    'Wertung': 9}, 
'5': {'Jahr': 3, 
    'Preis': 100, 
    'Schauspielern': [''], 
    'Titel': 8, 
    'Wertung': 10}, 
'7': {'Jahr': 3, 
    'Preis': 20, 
    'Schauspielern': [''], 
    'Titel': 16, 
    'Wertung': 9}, 
'9': {'Jahr': 3, 
    'Preis': 20, 
    'Schauspielern': [''], 
    'Titel': 90, 
    'Wertung': 9}} 

これは、次と同等です:

new_dict = {} 
for k,v in Filme.items(): 
    if v['Wertung'] >= 7: 
     new_dict[k] = v 

答えて

3

を印刷したいです辞書の理解は最も簡単になります。 Wertungは、任意のエントリのために不在であるかもしれないという可能性がある場合は

>>> {i:j for i,j in Filme.items() if j['Wertung'] >=7} 
{'7': {'Titel': 16, 'Wertung': 9, 'Preis': 20, 'Jahr': 3, 'Schauspielern': ['']}, '5': {'Titel': 8, 'Wertung': 10, 'Preis': 100, 'Jahr': 3, 'Schauspielern': ['']}, '4': {'Titel': 5, 'Wertung': 9, 'Preis': 20, 'Jahr': 3, 'Schauspielern': ['']}, '2': {'Titel': 30, 'Wertung': 7, 'Preis': 70, 'Jahr': 3, 'Schauspielern': ['']}, '9': {'Titel': 90, 'Wertung': 9, 'Preis': 20, 'Jahr': 3, 'Schauspielern': ['']}} 

、あなたが予期せず失敗からコードを防ぐためにget()を使用することができます。

>>> {i:j for i,j in Filme.items() if j.get('Wertung',0) >=7} 
2

Wertung == 7場合 だから、私はそれはあなただけFilme.items()上の辞書内包表記を使用することができ、この

Filme = {'2': {'Titel': 30, 'Jahr': 3, 'Wertung': 7, 'Preis': 70, 'Schauspielern': ['']}, 
     '4': {'Titel': 5, 'Jahr': 3, 'Wertung': 9, 'Preis': 20, 'Schauspielern': ['']}, 
     '5': {'Titel': 8, 'Jahr': 3, 'Wertung': 10, 'Preis': 100, 'Schauspielern': ['']}, 
     '7': {'Titel': 16, 'Jahr': 3, 'Wertung': 9, 'Preis': 20, 'Schauspielern': ['']}, 
     '9': {'Titel': 90, 'Jahr': 3, 'Wertung': 9, 'Preis': 20, 'Schauspielern': ['']}, 
     } 
+0

'key'が見つからない場合は、' j.get( 'Wertung'、0)> = 7'でもかまいませんか? –

+0

これは比較のために使用されるので、このフィールドは存在すると仮定しました。そうしないと、その特定のエントリがスキップされます。どんなところでも、私はそれを私の答えに加えました。ありがとうございました。 –

関連する問題