python中字典的筛选器列表
所以,我需要建立一个过滤器,基本上采取以下信息python中字典的筛选器列表,python,list,python-2.7,dictionary,filter,Python,List,Python 2.7,Dictionary,Filter,所以,我需要建立一个过滤器,基本上采取以下信息 dictlist = [{'ext': 'mp4', 'height': 480, 'id', 'pies'}, {'ext': 'webm', 'height': 360, 'id', 'pies2'}, {'ext': 'mp4',
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)
将返回。。。馅饼这个怎么样:
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
,而第二个版本只会返回高度最大的东西。
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
,而第二个版本将仅返回具有最大高度的对象。一个函数执行相同操作:
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
执行相同操作的函数:
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
也许你应该反复检查一下你的情况。它会返回tucker no?糟糕的措辞。我想要一个“低于”的值,而不是“等于或低于”的值。可能只需要遍历它并检查您的条件。它将返回tucker no?糟糕的措辞。我想要一个“低于”的值,而不是“等于或低于”的值。这并不能解释最大高度。我在中得到一个语法错误。这台Python 2.7兼容吗?@VardaElbereth--对不起,输入错误。当我们讨论这个问题时,您的示例数据也有一些语法错误(
,
,而不是:
)哈哈。非常感谢!是的,我差不多是手工做的。或者试图。实际的数据是巨大的,所以我不能复制/粘贴。而且,我应该说,我一直在用C#和Python进行工作,虽然很多关于C#问题的评论都非常刻薄、刻薄和傲慢,但到目前为止,所有用Python回答的人都非常棒和善良。你们真是太棒了,这并不能解释最大高度。我在输入端发现了一个语法错误。这台Python 2.7兼容吗?@VardaElbereth--对不起,输入错误。当我们讨论这个问题时,您的示例数据也有一些语法错误(,
,而不是:
)哈哈。非常感谢!是的,我差不多是手工做的。或者试图。实际的数据是巨大的,所以我不能复制/粘贴。而且,我应该说,我一直在用C#和Python进行工作,虽然很多关于C#问题的评论都非常刻薄、刻薄和傲慢,但到目前为止,所有用Python回答的人都非常棒和善良。你们太棒了