Shafayat Alam
Shafayat Alam

Reputation: 730

Update Dictionary in python

I want to inset new key,value pair into a variable that was not previously defined

Here is what i want to do:

def drawboard(nextmove):
    result = nextmove

    pos = 1
    print result

    for i in range(7):
        for j in range(7):
            if (j == 0 or i % 2 == 0 or j % 2 == 0):
                print '*',
            if (i % 2 != 0 and j % 2 != 0):
                print pos,
                pos += 1
            if (j == 6):
                print '\n'
    move = raw_input("Input you move(i.e. x,3[position, your symbol]: ")
    if move == 'q':
        exit()

    calcres(move)


def calcres(move):
    nextmove = dict([move.split(',')])
    drawboard(nextmove)


drawboard({0: 0})

Inside drawboard function i want to concatenate nextmove with result, and save all the moves inside the result finally. I tried initializing result = {} but as expected that removes all items from result and re-initializes it resulting only one item inside that dictionary.

Upvotes: 1

Views: 43

Answers (1)

user2314737
user2314737

Reputation: 29317

Use setdefault to initialize the result dictionary value to an empty list whenever the key is not present

def drawboard(nextmove):

    result.setdefault(nextmove[0],[]).append(nextmove[1])
    pos = 1
    #print result

    for i in range(7):
        for j in range(7):
            if (j == 0 or i % 2 == 0 or j % 2 == 0):
                print '*',
            if (i % 2 != 0 and j % 2 != 0):
                print pos,
                pos += 1
            if (j == 6):
                print '\n'
    move = raw_input("Input you move(i.e. x,3[position, your symbol]: ")
    if move == 'q':
        exit()

    calcres(move)


def calcres(move):
    nextmove = move.split(',')
    drawboard(nextmove)

result = {}
drawboard([0,0])

Upvotes: 1

Related Questions