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}