在python中筛选词典列表

2024-06-01 18:45:33 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我需要建立一个过滤器,基本上采取以下信息。。。

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'}]

(那里有更多的东西,但这是简化的)

然后输出元素的id,该元素同时是mp4(或者我想要的任何东西)。我的目标是一个函数,或者,如果它存在的话,使用内置的东西使它更像python-y)并且具有低于某个值的最高高度。

例如,我想构建一个类似于。。。

def getmestuff(listofdics, extrequired, heightmax):
    /*do the work*/
    return id;

例如,使用上面的数据。。。

getmestuff(dictlist, 'mp4', 720)

会回来。。。馅饼


Tags: 信息id元素过滤器目标extmp4height
2条回答

同样的功能:

def get_me_stuff(dict_l, val, max_h):
    best = 0
    id = None
    for d in dict_l:
        h = d.get('height')
        if d.get("ext") == val and max_h > h > best:
            best = h
            id = d.get("id")
    return id

这个怎么样:

mp4s = (d for d in dictlist if d['ext'] == 'mp4')
max(mp4s, key=lambda x: x['height'])

这将返回“max”字典——从那里获得id很容易。(而且您可以很容易地将mp4s内联,但为了清楚起见,我将它分成了两行。)


不太容易阅读,但更紧凑:

max(dictlist, key=lambda d: (d['ext'] == 'mp4', d['height']))

如果列表中没有mp4,那么第一个版本也会有助于提高一个ValueError,而第二个版本只会返回最大高度的东西。

相关问题 更多 >