Var*_*eth 1 python dictionary list filter python-2.7
所以,我需要构建一个基本上采用以下信息的过滤器...
dictlist = [{'ext': 'mp4',
'height': 480,
'id', 'pies'},
{'ext': 'webm',
'height': 360,
'id', 'pies2'},
{'ext': 'mp4',
'height': 360,
'id', 'charles1'},
{'ext': 'mp4',
'height': 720,
'id', 'tucker'}]
Run Code Online (Sandbox Code Playgroud)
(那里有更多的东西,但这是简化的)
然后输出元素的id,这个元素都是mp4(或者我想要的任何东西.我的目标是一个函数,或者替代地,如果它存在的话,使用内置的东西更加python-y)并具有最高的高度低于一个值.
例如,我想构建一个类似于......的函数.
def getmestuff(listofdics, extrequired, heightmax):
/*do the work*/
return id;
Run Code Online (Sandbox Code Playgroud)
所以例如使用上面的数据......
getmestuff(dictlist, 'mp4', 720)
Run Code Online (Sandbox Code Playgroud)
会回来......馅饼
这个怎么样:
mp4s = (d for d in dictlist if d['ext'] == 'mp4')
max(mp4s, key=lambda x: x['height'])
Run Code Online (Sandbox Code Playgroud)
这将返回"最大"字典 - 从那里获得id很容易.(你可以很容易地内联mp4s,但为了清晰起见,我把它分成了两行.)
不太容易阅读,但更紧凑:
max(dictlist, key=lambda d: (d['ext'] == 'mp4', d['height']))
Run Code Online (Sandbox Code Playgroud)
ValueError如果列表中没有mp4 ,第一个版本也将有助于提升,而第二个版本将在这种情况下返回具有最大高度的东西.