2016-10-22 5 views
0

Ich muss durchlaufen jeden Wert in einem Wörterbuch und ersetzen '' mit keiner. Was mache ich falsch?Wörterbuch Verständnis Wert auf keine

data = {'phone': '', 'email': '[email protected]', 'fname': 'Joe', 'zip_code': '', 'address2': '', 'address1': '', 'city': '', 'state': '', 'lname': 'Yang'} 

clean = {k: v=None for k, v in data.items() if v == ''} 

Ergebnis

clean = {k: v=None for k, v in data.items() if v == ''} 
       ^
SyntaxError: invalid syntax 

Antwort

2

Sie wollen Verwenden Sie shorthand-if als Wertausdruck, nicht Verständnisbedingung (die in der Tat entfernt wird Schlüssel ganz).

data = {'phone': '', 'email': '[email protected]', 'fname': 'Joe', 'zip_code': '', 'address2': '', 'address1': '', 'city': '', 'state': '', 'lname': 'Yang'} 
clean = {k: None if v == '' else v for k, v in data.items()} 
3

Sie können eine Zuordnung in einem Wörterbuch Verständnis nicht.

Was Sie wollen, ist ein ternäre Operator, die leere Zeichenfolge Werte mit None ersetzt und gibt andere wie:

clean = {k: None if v == '' else v for k, v in data.items()} 
#   ^^^^^^^^^^^^^^^^^^^^^^ 

Referenz:

Does Python have a ternary conditional operator?

Verwandte Themen