繁体   English   中英

在字典列表中查找最小值

[英]Finding minimum values in a list of dicts

如果我有像这样的字典列表:

l = [{'dist':56, 'responder':N}, {'dist':26, 'responder':N}, {'dist':86, 'responder':N}]

我想返回两个最小距离(“ dist”)以及“ responder”的值,用Python做到这一点的最佳方法是什么?

首先尝试对您的列表进行排序

>>> from operator import itemgetter
>>> sorted(l, key=itemgetter('dist'), reverse=True)
[{'responder': 'N', 'dist': 86}, {'responder': 'N', 'dist': 56}, {'responder': 'N', 'dist': 26}]

然后切片前两个元素

>>> sorted(l, key=itemgetter('dist'), reverse=True)[:2]
[{'responder': 'N', 'dist': 86}, {'responder': 'N', 'dist': 56}]

从他们那里得到响应者

>>> map(itemgetter('responder'), sorted(l, key=itemgetter('dist'), reverse=True)[:2])
['N', 'N']

使用@Bakuriu的解决方案进行修改:

l = [{'dist':56, 'responder':'n'}, {'dist':26, 'responder':'n'}, \
{'dist':86, 'responder':'n'}]

smallestTwo = sorted(l, key=lambda d: d['dist'])[:2]

输出:

[{'responder': 'n', 'dist': 26}, {'responder': 'n', 'dist': 56}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM