Han*_*Fay 68 python dictionary list max min
我有一个像这样的词典列表:
[{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
Run Code Online (Sandbox Code Playgroud)
我想找到min()和max()价格.现在,我可以使用带有lambda表达式的键(在另一篇SO文章中找到)轻松地对此进行排序,所以如果没有其他方法我就不会卡住.然而,从我所看到的,几乎总是在Python中有一个直接的方式,所以这是我学习更多东西的机会.
Hug*_*ell 185
lst = [{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
maxPricedItem = max(lst, key=lambda x:x['price'])
minPricedItem = min(lst, key=lambda x:x['price'])
Run Code Online (Sandbox Code Playgroud)
这不仅告诉您最高价格是什么,还告诉您哪个项目最贵.
dap*_*wit 50
有几种选择.这是一个直截了当的:
seq = [x['the_key'] for x in dict_list]
min(seq)
max(seq)
Run Code Online (Sandbox Code Playgroud)
[编辑]
如果你只想迭代一次列表,你可以尝试这个(假设值可以表示为ints):
import sys
lo,hi = sys.maxint,-sys.maxint-1
for x in (item['the_key'] for item in dict_list):
lo,hi = min(x,lo),max(x,hi)
Run Code Online (Sandbox Code Playgroud)
dcr*_*sta 36
我认为最直接(也是最Pythonic)的表达方式如下:
min_price = min(item['price'] for item in items)
Run Code Online (Sandbox Code Playgroud)
这避免了对列表进行排序的开销 - 并且,通过使用生成器表达式而不是列表推导 - 实际上也避免了创建任何列表.高效,直接,可读...... Pythonic!
一个答案是将你的dicts映射到生成器表达式中的interest值,然后应用内置函数min和max.
myMax = max(d['price'] for d in myList)
myMin = min(d['price'] for d in myList)
Run Code Online (Sandbox Code Playgroud)
也可以使用这个:
from operator import itemgetter
lst = [{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
max(map(itemgetter('price'), lst))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50890 次 |
| 最近记录: |