The code snippet is what I want to do. Previously I use a different version of my code. But it is out of joint according to Python coding guidelines because I was assigned my lambda function to a variable. It was an obvious violation. Here is my violator code:
my_dict = {
'first_name': 'Jimmy Floyd',
'last_name': 'Hasselbaink'
}
db_data = {}
def create_info(db_data, data):
split_join = lambda field: '_'.join(data.get(field).split()) if field in data else None
name = split_join('name')
first_name = split_join('first_name')
last_name = split_join('last_name')
code = '_'.join(filter(None, [name, first_name, last_name])).lower()
db_data['code'] = code
return db_data
Then I have extracted my split_join variable to a method. The code is below:
my_dict = {
'first_name': 'Jimmy Floyd',
'last_name': 'Hasselbaink'
}
db_data = {}
def split_join(data, field):
return '_'.join(data.get(field).split()) if field in data else None
def create_info(db_data, data):
name = split_join(data, 'name')
first_name = split_join(data, 'first_name')
last_name = split_join(data, 'last_name')
code = '_'.join(filter(None, [name, first_name, last_name])).lower()
db_data['code'] = code
return db_data
new_db_data = create_info(db_data, my_dict)
print(new_db_data)
I have forced into writing split_join method in three times. Is there any way to prevent this situation?
data
is not being copied or modified when you pass it tosplit_join
, right? It's just a reference, so no extra data is created nor is the original modified. \$\endgroup\$