2016-03-26 10 views
1

私がやっていることは、x、yの値をキーで保存することです。たとえば、私の場合、x、yの値が3に達すると、いくつかの処理が行われるようにする必要があります。(Dictionary)Pythonでx、yのキーを格納

これは私が試したものです:しかし、これは私が辞書にリストを格納することができないので、私にエラーが発生します。

dictionary= {} 
player = [0,0] 

def Checking(): 
    if player in dictionary: 
     dictionary[[player]] +=1 
     print("repopulate", dictionary) 
    else: 
     dictionary[player] = 0 
     print(dictionary) 
    if dictionary.get(player) >= 3: 
     print("It is done!") 

EDIT:問題の明確性の欠如について 申し訳ありません。プレーヤー変数は、与えられたx、y内を移動したい場所のユーザー入力です。複数の宝物があり、ユーザが宝物x、yと同じ位置x、yを選択する場合は、その宝物に+1を加える必要があります。宝が3に達すると、それは減少するはずです。

+0

私は本当に質問を理解していません。なぜあなたのリストをキーにする必要がありますか?キー値はいつ変更されますか? –

+0

プレーヤーでstr()を呼び出して文字列に変換し、その文字列をキーとして使用できます。 – NendoTaka

+0

こんにちは、基本的にキーは、ユーザーがx、y座標の値を入力するたびに一度変更されます。 – Test1234

答えて

0

私はあなたがあなたのキーとしてのプレーヤーを使用したいと思うし、そのキーの値として数:

>>> treasure_hits = {} 
>>> player = (0,0) 
>>> try: 
... treasure_hits[player] += 1 
... except KeyError: 
... treasure_hits[player] = 0 
... 
>>> treasure_hits 
{(0, 0): 0} 
>>> 
>>> try: 
... treasure_hits[player] += 1 
... except KeyError: 
... treasure_hits[player] = 0 
... 
>>> treasure_hits 
{(0, 0): 1} 
>>> 

リストの代わりにタプルをtreasure_hits作るが、それはそれ以来のキーとして使用することができます不変です

+0

質問に明快さがないのは残念です。プレーヤー変数は、与えられたx、y内を移動したい場所のユーザー入力です。複数の宝物があり、ユーザが宝物x、yと同じ位置x、yを選択する場合は、その宝物に+1を加える必要があります。宝が3に達すると、それは減少するはずです。 – Test1234

+0

あなたのコードと私の考え方が大きく違うと思うのは、あなたがキーとしてリストを使い、それをすることができないということだけです。しかし、あなたがタプル(プレイヤー)をすると、それをキーとして使うことができます –

+0

ありがとうジョエル、瞳孔または文字列の両方が動作します! – Test1234

0

リストx、yをこのような辞書に保存すると、リストを反復処理する必要がある値を変更するときの条件によっても異なります。

treasureHits = {} 
player = [0,0] 
def myFunction(): 
    treasureHits["key"]=[p+1 for p in player] 
    print treasureHits["key"] 
myFunction() 

これは私があなたの質問から理解していることです。

0

これを行う最も簡単な方法は、player変数のstr()を呼び出すことです。これにより、リストが文字列に変換されます。辞書はキーとしてリストを使用できないため、これを行う必要があります。 treasureHits[str(player)]

非常に珍しいキーがあり、誰かがあなたのコードを編集していると混乱する可能性があるため、これは通常お勧めしないと考えられています。あなたのコードにたくさんのコメントを残してください!

関連する問題