在python字典中选择K个最大值
我有一本字典如下:在python字典中选择K个最大值,python,dictionary,Python,Dictionary,我有一本字典如下: ls = [{'0': {'1': '1','2': '0.5','3': '1'},'1': {'0': '0.2','2': '1','3': '0.8'},}] 我想为字典(ls)的每个键选择k个最大值及其键。我写了以下命令。它只给我k个最大的键,没有它们的值 Python代码: import heapq k=2 for dic in ls: for key in dic: print(heapq.nlargest(k, dic[key], k
ls = [{'0': {'1': '1','2': '0.5','3': '1'},'1': {'0': '0.2','2': '1','3': '0.8'},}]
我想为字典(ls)的每个键选择k个最大值及其键。我写了以下命令。它只给我k个最大的键,没有它们的值
Python代码:
import heapq
k=2
for dic in ls:
for key in dic:
print(heapq.nlargest(k, dic[key], key=dic[key].get))
输出
['2', '3']
['3', '1']
我需要每个选定键的值。如何:
from operator import itemgetter
for d in ls:
for key, d2 in d.items():
print(dict(heapq.nlargest(k, d2.items(), key=itemgetter(1))))
请注意,您的值仍然是字符串,因此它们是按字典顺序排列的,这不是您想要的,因为'2'>12'
而字典是不按顺序排列的 那么:
from operator import itemgetter
for d in ls:
for key, d2 in d.items():
print(dict(heapq.nlargest(k, d2.items(), key=itemgetter(1))))
请注意,您的值仍然是字符串,因此它们是按字典顺序排列的,这不是您想要的,因为'2'>12'
而字典是不按顺序排列的 - 首先,我只是想看看你为什么
这是一个包含dict的列表,它与问题中的描述不匹配ls=[{'0':{'1':'1','2':'0.5','3':'1'},'1':{'0':'0.2','2':'1','3':'0.8'},}]
- 下面是一个使用dict理解的解决方案,它应该能满足您的需求:)
在这里,它用于解决您的问题:
ls = [{'0': {'1': '1','2': '0.5','3': '1'},'1': {'0': '0.2','2': '1','3': '0.8'},}] d = ls[0] get_n_largest_vals(2, d) >>> {'0': ['3', '2'], '1': ['3', '2']}
- 首先,我只是想看看你为什么
这是一个包含dict的列表,它与问题中的描述不匹配ls=[{'0':{'1':'1','2':'0.5','3':'1'},'1':{'0':'0.2','2':'1','3':'0.8'},}]
- 下面是一个使用dict理解的解决方案,它应该能满足您的需求:)
在这里,它用于解决您的问题:
ls = [{'0': {'1': '1','2': '0.5','3': '1'},'1': {'0': '0.2','2': '1','3': '0.8'},}] d = ls[0] get_n_largest_vals(2, d) >>> {'0': ['3', '2'], '1': ['3', '2']}