1
在下面的字典中,如何删除最低值的两个条目?要解决这个问题删除最低值的字典条目
{('F2', 'F1'): 0.9154929577464789,
('F2', 'F3'): 0.8285714285714286,
('F4', 'F1'): 0.8285714285714286,
('F4', 'F3'): 0.9130434782608695}
在下面的字典中,如何删除最低值的两个条目?要解决这个问题删除最低值的字典条目
{('F2', 'F1'): 0.9154929577464789,
('F2', 'F3'): 0.8285714285714286,
('F4', 'F1'): 0.8285714285714286,
('F4', 'F3'): 0.9130434782608695}
一种方法是排序的价值观和片中的第一两项:
In [1]: data = {('F2', 'F1'): 0.9154929577464789,
...: ('F2', 'F3'): 0.8285714285714286,
...: ('F4', 'F1'): 0.8285714285714286,
...: ('F4', 'F3'): 0.9130434782608695}
In [2]: from operator import itemgetter
In [3]: dict(sorted(data.items(), key=itemgetter(1))[2:])
Out[3]: {('F2', 'F1'): 0.9154929577464789, ('F4', 'F3'): 0.9130434782608695}
一个潜在的问题可能是,如果你有2个以上具有相同最低值的项目,我们将只分割其中的2个,而不是全部。
或者,我们可以使用heapq
(实现了“最小堆”的数据结构)找到n个最小的项目,从我们的字典中进行筛选:
In [4]: import heapq
In [5]: smallest = set(heapq.nsmallest(2, data, key=data.get))
In [6]: {key: value for key, value in data.items() if key not in smallest}
Out[7]: {('F2', 'F1'): 0.9154929577464789, ('F4', 'F3'): 0.9130434782608695}
鉴于你只是想砸他们然后你可以下降两分钟:
In [1]:
d = { ... }
for _ in range(2):
del d[min(d, key=d.get)]
print(d)
Out[1]:
{('F2', 'F1'): 0.9154929577464789, ('F4', 'F3'): 0.9130434782608695}