我有一个字典列表,例如:
movies = [
{
"name": "The Help",
"imdb": 8.0,
"category": "Drama"
},
{
"name": "The Choice",
"imdb": 6.2,
"category": "Romance"
},
{
"name": "Colonia",
"imdb": 7.4,
"category": "Romance"
},
{
"name": "Love",
"imdb": 6.0,
"category": "Romance"
},
{
"name": "Bride Wars",
"imdb": 5.4,
"category": "Romance"
},
{
"name": "AlphaJet",
"imdb": 3.2,
"category": "War"
},
{
"name": "Ringing Crime",
"imdb": 4.0,
"category": "Crime"
}
]
我想用IMDB>;5.5筛选它们:
我尝试以下代码:
^{pr2}$以及输出:
[{'name': 'The Help', 'imdb': 8.0, 'category': 'Drama'},
{'name': 'The Choice', 'imdb': 6.2, 'category': 'Romance'},
{'name': 'Colonia', 'imdb': 7.4, 'category': 'Romance'},
{'name': 'Love', 'imdb': 6.0, 'category': 'Romance'},
{},
{},
{}]
当IMDB低于5.5时,它返回一个空字典。有什么想法吗?谢谢您!在
使用列表理解的另一种方法是使用Python
builtins
中的filter
函数。它接受一个函数和一个iterable,并返回一个“filter object”,该对象只保留通过函数时返回True的项。在在这种情况下,它将是:
我将
list()
包含在所有内容中,以将filter对象转换为可以使用的列表。如果您想了解更多关于filter
内置的信息,可以阅读here。在过滤字典列表不需要字典理解。在
您只需使用基于字典值的条件的列表理解:
按照编写代码的方式,字典理解在
i['imdb'] <= 5.5
的情况下生成一个空字典。在其他的答案已经提供了更好的替代方法,但是让我们看看你是怎么做的,看看发生了什么。在
如果我从你的代码中删除一些内容,我会得到:
看看这一点,就应该弄清楚为什么要为每部电影创建一部词典。您在字典中确实有一个
if
语句,但是因为它在字典中,所以它不会改变它是否被创建。在要按照您之前的方式执行此操作,您基本上需要检查两次,使第一次检查不相关:
^{pr2}$可以简化为
现在,既然我们没有更改项目,只需:
相关问题 更多 >
编程相关推荐