获取字典中3个最小值对应的key
Get the key corresponding to the 3 minimum values within a dictionary
我有一个 Python 字典,我想在其中找到 3 个最小值的键。
例如:
Input: d = {1 : 10 , 0.1 : 15 , 0.3 : 18 , 0.001 : 25 , 0.003 : 42}
Output: [1, 0.1 , 0.3]
我知道如何通过列表理解只获取一个最小值:
min_val = min(d.values())
min_numbers = [num for num, value in d.items() if value == min_val]
但是三个人要怎么做呢?
你可以这样做:
d = {1: 10, 0.1: 15, 0.3: 18, 0.001: 25, 0.003: 42}
for _, k in sorted([(v, k) for k, v in d.items()])[:3]:
print(k)
输出:
1
0.1
0.3
您可以将字典 items
方法与 sorted
函数组合,然后使用列表理解仅过滤值并使用切片提取前三个结果:
d = {1 : 10 , 0.1 : 15 , 0.3 : 18 , 0.001 : 25 , 0.003 : 42}
min_numbers = [key for key, value in sorted(d.items(), key=lambda item: item[1])][:3]
试试这个:
l = [item for item in sorted(d, key=d.get)][0:3]
print(l)
输出
[1, 0.1, 0.3]
我有一个 Python 字典,我想在其中找到 3 个最小值的键。
例如:
Input: d = {1 : 10 , 0.1 : 15 , 0.3 : 18 , 0.001 : 25 , 0.003 : 42}
Output: [1, 0.1 , 0.3]
我知道如何通过列表理解只获取一个最小值:
min_val = min(d.values())
min_numbers = [num for num, value in d.items() if value == min_val]
但是三个人要怎么做呢?
你可以这样做:
d = {1: 10, 0.1: 15, 0.3: 18, 0.001: 25, 0.003: 42}
for _, k in sorted([(v, k) for k, v in d.items()])[:3]:
print(k)
输出:
1
0.1
0.3
您可以将字典 items
方法与 sorted
函数组合,然后使用列表理解仅过滤值并使用切片提取前三个结果:
d = {1 : 10 , 0.1 : 15 , 0.3 : 18 , 0.001 : 25 , 0.003 : 42}
min_numbers = [key for key, value in sorted(d.items(), key=lambda item: item[1])][:3]
试试这个:
l = [item for item in sorted(d, key=d.get)][0:3]
print(l)
输出
[1, 0.1, 0.3]