在字典列表中找到最小值

2024-05-16 22:34:21 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一张单子,比如:

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

我想返回2个最小距离('dist')以及'responder'的值,在Python中最好的方法是什么?你知道吗


Tags: 方法距离dist单子responder
2条回答

使用@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}]

试着先给你的单子排序

>>> 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']

相关问题 更多 >