这是我要执行的查询类型,用伪代码编写:

select blob from blobs where blob['color'] == 'red' having maximum(blob['size'])
显然,我可以在 python 中这样写:
redBlobs = [];

for blob in blobs:
    if blob['color'] == 'red':
        redBlobs.append('blob')

largestBlob = None

for redBlob in redBlobs:
    if largestBlob == None or redBlob['size'] > largestBlob['size']:
        largestBlob = redBlob

return largestBlob
但我怀疑有一种更清洁的方法来做到这一点。我是 python 的新手,所以我仍然非常迫切地接近它。
编辑:
这是我在查看有关 SO 的其他一些问题后提出的解决方案:
max([blob for blob in blobs if blob['color'] == 'red'], key = lambda b: b['size'])
据推测,有更好的方法。

最佳答案

以下给出了最大的 Blob

编辑 :当没有红色 blob 时捕获异常

import operator
try:
    largestBlob = max((blob for blob in blobs if blob['color'] == 'red'),key=operator.itemgetter('size'))
except ValueError:
    largestBlob = None

关于python - 是否有在python中查询字典的简写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5514906/

10-11 22:04