Python: 根据字典寻找最小值
所以我想写的代码是这样的:
cur_loc = min(open_set,key=lambda x:costs[x])
cur_loc
是一个元组,我的目标是把它设置为 open_set
中成本最低的元组。(你可以通过 costs[x]
来找到 x
的成本)
我该怎么做呢?我试过查看 Python.org 上关于 min()
的文档,但似乎没有找到太多帮助。
谢谢!
编辑:我自己解决了这个问题。
我真是太笨了,居然没有初始化成本字典。我其实是复制粘贴了别人的 Python 代码来测试他们的做法,但显然他们的代码片段没有包括初始化的部分。哎呀。如果有人感兴趣的话:
for row in range(self.rows):
for col in range(self.cols):
myloc = (row,col)
if (myloc) not in closed_set:
costs[myloc] = (abs(end_row-row)+abs(end_col - col))*10
if (myloc) not in open_set:
open_set.add(myloc)
parents[myloc] = cur_loc
cur_loc = min(open_set,key=lambda x:costs[x])
2 个回答
3
你提供的内容是正确的,如果 cost[x]
是一个字典,并且用元组作为键的话。我想你可能是想提取元组中的某个字段,然后查找那个字段的成本:
>>> costs = dict(red=10, green=20, blue=30)
>>> open_set = {('red', 'car'), ('green', 'boat'), ('blue', 'plane')}
>>> min(open_set, key=lambda x: costs[x[0]])
('red', 'car')
5
对我来说有效。你有什么问题呢?
>>> costs = { '1': 1, '2': 2, '3': 3 }
>>> open_set = set( ['1','2'] )
>>> min(open_set,key=lambda x:costs[x])
'1'