在内部字典中获取最少三个值(Python 3.4)

时间:2017-11-21 11:10:15

标签: python dictionary key min

我的字典值是这样的:

manhattan[imagePath1][imagePath2] = img2manhattan

那么我怎样才能获得最少三个值的键作为列表? (在imagePath2键中)

(我希望获得第一个最小值的键+第二个最小值的键+第三个最小值的键作为列表。)

3 个答案:

答案 0 :(得分:1)

我会这样做:

d = dict(manhattan[imagePath1][imagePath2])
min_keys = []
for i in xrange(3):
    min_keys.append(min(d,key=d.get))
    del d[min_keys[-1]] 

在此min_keys包含您需要的内容之后。

答案 1 :(得分:0)

您可以使用heapq.nsmallest

[('path1_a', 'path2_a', 1),
 ('path1_b', 'path2_c', 3),
 ('path1_c', 'path2_e', 4)]

输出:

GetName(id)

答案 2 :(得分:0)

您应该提供一些示例输入和预期输出,如果可能请使用这些信息编辑您的问题,这里尝试使用@peter示例数据:

  

一线解决方案:

#data from @peter
manhattan = {'path1_a': {'path2_a': 1,
                         'path2_b': 5},
             'path1_b': {'path2_c': 3,
                         'path2_d': 7},
             'path1_c': {'path2_e': 4,
                         'path2_f': 9}}

print(["".join([key for key, value in item.items() if value == min(item.values())])for item in manhattan.values()])

输出:

['path2_e', 'path2_a', 'path2_c']
  

详细解决方案:

final_list=[]
for item in manhattan.values():
    for key,value in item.items():
        if value == min(item.values()):
            final_list.append(key)

print(final_list)

输出:

['path2_c', 'path2_e', 'path2_a']