2016-06-13 6 views
0

Geändert, um es verständlicher zu machen.Python-dict.get-Methode eine Funktion auf einen Schlüssel anwenden

Ich teste die Methode dict.get des Python aus und benötige dafür Hilfe.

Was ich versuche zu tun ist, dass ich ein Wörterbuch mit einigen Werten habe. Ich versuche, diesen einen Wert in ein anderes Wörterbuch zu kopieren, nachdem ich eine Methode auf den Wert des Wörterbuchs angewendet habe. hier ist, wie der Code wie

test_dict = {"name" : "test-12312", "phone" :"123456"} 

result_dict = {} 

result_dict['name'] = to_alphanumeric(test_dict.get('name', "Default-123")) 

Was, was ich will, ist, sieht, wenn die name in test_dict existiert dann to_alphanumeric Funktion auf sie anwenden und speichern sie in result_dict andernfalls den Standardwert speichern. Der Ansatz, den ich befolge, wird auch auf Default-123 angewendet, wenn der Wert nicht existiert, den ich nicht will. Ich möchte die Methode to_alphanumeric nur anwenden, wenn der Schlüssel test_dict['name'] existiert.

Was ist der beste Weg, dies zu tun unter Berücksichtigung, dass Default-Wert in Kleinbuchstaben ist und ich nur in Großbuchstaben konvertieren will, wenn Wert existiert.

+0

Dies wird auch den Standardwert umwandeln als auch in Großbuchstaben. Was ich nicht will. – hjelpmig

+0

versuchen Sie, 'defaultdict' zu verwenden oder' setdefault' Methode für das Wörterbuch zu verwenden – mic4ael

Antwort

0

Wenn die Werte nicht leer sind, dann:

result_dict['name'] = test_dict.get('name', '').upper() or 'Default' 
0

Probieren Sie etwas wie dieses

test_dict = defaultdict(lambda: 'default') 
test_dict.get('name').capitalize() 

oder

test_dict = {} 
test_dict.setfdefault('default') 
test_dict.get('name').capitalize() 
+0

Die Sache ist, dass es möglich ist, dass jeder Schlüssel einen eigenen Standardwert haben kann, abhängig vom Typ. Zum Beispiel könnte der Name "Default" haben und das Telefon kann zum Beispiel "0987654321" haben. – hjelpmig

+0

Warum implementieren Sie nicht die Funktion 'to_alphanumeric', um zwei Argumente zu akzeptieren, z. 'def to_alphanumeric (test_dict, arg_name)', so dass Sie innerhalb der Funktion überprüfen können, ob ein bestimmter Schlüssel existiert und basierend auf dem korrekten Rückgabewert – mic4ael

+0

möchte ich das nicht, da 'to_alphanumeric' auch an vielen anderen Stellen verwendet wird und entworfen wurde nur mit Strings umgehen. Das wird viel Refactoring erfordern. – hjelpmig

Verwandte Themen