Python:根据字典查找最小值

时间:2011-11-23 23:12:39

标签: python dictionary a-star

所以这就是我“喜欢”能写的东西:

cur_loc = min(open_set,key=lambda x:costs[x])

cur_loc是一个元组,目标是将其设置为open_set中具有最低成本的元组。 (并且您会发现xcosts[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])

2 个答案:

答案 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')