4 python dictionary list-comprehension list python-3.x
我有一个词典列表,例如:
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"
}
]
Run Code Online (Sandbox Code Playgroud)
我想通过IMDB> 5.5过滤它们:
我试试这段代码:
[ { k:v for (k,v) in i.items() if i.get("imdb") > 5.5 } for i in movies]
Run Code Online (Sandbox Code Playgroud)
和输出:
[{'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'},
{},
{},
{}]
Run Code Online (Sandbox Code Playgroud)
当IMDB低于5.5时,它返回一个空字典.有任何想法吗?谢谢!
jpp*_*jpp 13
不需要字典理解来过滤字典列表.
您可以使用基于字典值的条件的列表推导:
res = [d for d in movies if d['imdb'] > 5.5]
Run Code Online (Sandbox Code Playgroud)
编写代码的方式,字典理解会产生一个空字典i['imdb'] <= 5.5.