2010-07-16 78 views
0

problem.getSuccessors(getStartState()) -它返回類似((4,5) , north, 1)的東西 - 這意味着3件事情 - 元組,方向,成本。python問題的字典

我正在使用字典,closed = {} 現在我需要把上面的函數的輸出放在字典「關閉」 - 我該怎麼做?

我只需要使用字典,因爲我需要返回「行動」,即北,南....在函數的結尾。在做了一些迭代之後,我的字典將會有多個條目,例如((4,5),north,1),((3,4),south,1),我需要從dict中提取密鑰,即( 4,5)。我用什麼東西?

回答

2

我需要把上面的 函數的輸出放到字典中「關閉」 - 我該怎麼做?

它完全取決於你想用什麼作爲關鍵,以及作爲價值!如果關鍵是一些完全無關的元組((4,5) , north, 1)(我不知道什麼是north標識應該是或它是如何得到你 - 你肯定它不是'north'代替?!),然後@米帕迪的回答是正確的。如果第一項(嵌套的元組)是關鍵,其他兩個值,那麼,後

s = problem.getSuccessors(getStartState()) 

你會做:

closed[s[0]] = s[1:] 

如果「元組和方向」,一起,是關鍵的,只是成本的值,那麼你會做的,而不是:

closed[s[:2]] = s[2] 

那麼,什麼是您打算爲重點,以使用到字典closed?!

+0

我將使用(4,5)作爲關鍵字和其他2作爲值。 所以我shud做 「S = problem.getSuccessors(getStartState())」 閉合[S [0]] = S [1:] 如果我需要只使用鍵,然後笏shud怎麼辦?因爲後來關閉了很多條目,如((4,5),north,1)。 – Shilpa 2010-07-16 06:03:34

+0

如果忘記提及,那是'北'。不是北字符串 – Shilpa 2010-07-16 06:05:55

+0

如果你「只需要使用鍵」(而不是值),那麼使用'set',而不是一個字典(只需使用'closedset = set()'並使用'closedset 。新增(S [0])'!)。如果你的意思是對於「元組」(例如'(4,5)')的每個給定值有很多方向成本條目,那麼'import collections',使用'closed = collections.defaultdict(list) '和'closed [s [0]]。append(s [1:])''。如果你能清楚地解釋你的需求**,那麼幫助你會更容易,並且更容易(我注意到你還沒有接受你稱讚的其他答案......)。 – 2010-07-16 06:16:16

1
closed = {} 
# ... 
closed["your_key"] = problem.getSuccessors(getStartState()) 

迴應評論:

如果「帶出去」你的意思是你想(4,5)是關鍵和(north, 1)是價值,你可以元組:

val = problem.getSuccessors(getStartState()) 
closed[val[0]] = val[1:] 

如果您只想刪除(4,5),您還可以對元組進行分片:

closed["your_key"] = problem.getSuccessors(getStartState())[1:] 

是的,你可以使用一個變量作爲鍵而不是硬編碼的字符串。

+0

「your_key」可以是任何變量 - 像指數 如果我需要拿出從它的第一件事,(4,5),什麼是我shud使用,則命令? – Shilpa 2010-07-16 05:53:52

+0

是的,我會在我的答案中解決這兩點。 – mipadi 2010-07-16 06:34:44