这是我要执行的查询类型,用伪代码编写:
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/