Python: 根据字典寻找最小值

0 投票
2 回答
795 浏览
提问于 2025-04-17 06:57

所以我想写的代码是这样的:

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'

撰写回答