所以这就是我“喜欢”能写的东西:
cur_loc = min(open_set,key=lambda x:costs[x])
cur_loc
是一个元组,目标是将其设置为open_set
中具有最低成本的元组。 (并且您会发现x
与costs[x]
)
我怎么能这样做?我在min()
上尝试了Python.org的文档,但我似乎没有找到太多帮助。
谢谢!
修改 我解决了自己的问题。
我很迟钝并没有初始化费用字典。我实际上是复制并粘贴其他人的python代码以测试他们正在做什么,但显然他们创建的代码片段不包括初始化部分。 Woops。如果有人有兴趣:
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])
答案 0 :(得分:5)
为我工作。你有什么问题?
>>> costs = { '1': 1, '2': 2, '3': 3 }
>>> open_set = set( ['1','2'] )
>>> min(open_set,key=lambda x:costs[x])
'1'
答案 1 :(得分: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')