我的字典值是这样的:
manhattan[imagePath1][imagePath2] = img2manhattan
。
那么我怎样才能获得最少三个值的键作为列表? (在imagePath2键中)
(我希望获得第一个最小值的键+第二个最小值的键+第三个最小值的键作为列表。)
答案 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']