2010-08-30 2 views
1

Comment puis-je créer un dictionnaire en python qui est passé à une fonction il ressemblerait à ceci:Comment puis-je modifier un dict localement pour ne pas effectuer la variable globale en python

def foobar(dict): 
    dict = tempdict # I want tempdict to not point to dict, but to be a different dict 
    #logic that modifies tempdict 
    return tempdict 

Comment puis-je fais ça?

+2

'dict' n'est pas un bon nom pour un dict; il ombres le 'dict' intégré. –

+0

okay. Je n'avais pas l'intention de l'utiliser, mais je vais le garder à l'esprit. Merci pour l'information! –

Répondre

4

Vous devez copier dict vers tempdict.

def foobar(d): 
    temp = d.copy() 
    # your logic goes here 
    return temp 

copy fait une copie superficielle de l'dict (à savoir la copie de ses valeurs, mais pas les valeurs de ses valeurs).

% python 
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> d = {'x': 17, 'y': 23} 
>>> t = d.copy() 
>>> t 
{'y': 23, 'x': 17} 
>>> t['x'] = 93 
>>> t 
{'y': 23, 'x': 93} 
>>> d 
{'y': 23, 'x': 17} 
>>> 
Questions connexes