2013-05-07 3 views
2

J'essaie de me débarrasser de la valeur Nom dans une réponse. Voir ci-dessous:Python supprimer ou remplacer la clé

response_data_all_details = decode_transaction_response(response.text) 

# Remove and sensitive information we don't want to be stored in the database. 
response_data = remove_sensitive(response_data_all_details) 

Fonction: Si le nom dans la réponse remplacer par « Non stocké » Texte.

def remove_sensitive(data): 
    for key in data: 
     if data[key] == "Name": 
      data['Name'] = "Not Stored!" 
    return data 

Cependant, cette fonction ne semble pas fonctionner, pourquoi?

Exemple response_data

{ 
    "URL" : "http:\/\/www.test.com", 
    "Name" : "James", 
    "Currency" : "GBP", 
    "Amount" : 5.880000000000001, 
} 

Répondre

2

Une solution simple est d'utiliser ici: if key in data

def remove_sensitive(data,key): 
    if key in data: 
     data[key] = "Not Stored!" 
    return data 

Correction de votre code:

Vous devez utiliser if key == "Name"::

def remove_sensitive(data): 
    for key in data: 
     if key == "Name": 
      data[key] = "Not Stored!" 
    return data 

En effet, une itération sur un dictionnaire donne c'est des clés à:

>>> for key in data: 
...  print key 
...  
URL 
Currency 
Amount 
Name 

Démo:

def remove_sensitive(data): 
    for key in data: 
     if key == "Name": 
      data[key] = "Not Stored!" 
    return data 

>>> data = {     
    "URL" : "http:\/\/www.test.com", 
    "Name" : "James", 
    "Currency" : "GBP", 
    "Amount" : 5.880000000000001, 
} 
>>> remove_sensitive(data) 
{'URL': 'http:\\/\\/www.test.com', 
'Currency': 'GBP', 
'Amount': 5.880000000000001, 
'Name': 'Not Stored!'} 
1

Essayez cette

def remove_sensitive(data): 
    for key,value in data.items(): 
     if key == "Name": 
      data[key] = "Not Stored!" 
    return data 
1

J'utiliseraient le dict méthode has_key()

def remove_sensitive(data): 
    if data.has_key("Name"): 
     data["Name"] = "Not Stored" 
    return data 
2

Vous l'avez rendu trop compliqué. Cela devrait fonctionner:

def remove_sensitive(data): 
    data['Name'] = "Not Stored!" 
    return data 

ou, si vous n'êtes pas certain que la 'Name' clé est là:

def remove_sensitive(data): 
    if data.has_key('Name'): 
     data['Name'] = "Not Stored!" 
    return data 
Questions connexes