过滤嵌套字典 [英] Filtering nested dictionaries

查看:82
本文介绍了过滤嵌套字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有这本字典:

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编程的初学者,我不知道该怎么做。
因此,如果 Wertung == 7 ,我希望它打印此

and I have to filter it based on the Wertung (rating), only showing movies which have a rating >= one I choose. Thing is, I'm quite a beginner in Python Programming and I have no idea how should I do this. So if Wertung == 7, I want it to print this

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': ['']},
        }


推荐答案

您可以对 Filme.items()使用字典理解:

You can just use a dictionary comprehension over the Filme.items():

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

这篇关于过滤嵌套字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆