Espiring
Espiring

Reputation: 49

How to make my code more effective, and less time-consuming

So a code snipped is below

#Check if inputs is empty, if they are, delete them
if(table_parameters['parameter1'] == " "):
  del table_parameter['parameter1']
if(table_parameters['parameter2'] == " "):
  del tatble_parameters['parameter2']
if(table_parameters['parameter3'] == " "):
  del table_parameters['parameter3']
if(table_parameters['parameter4'] == " "):
  del table_parameters['parameter4']

It checks if a part of table_parameters(dictionary) is empty, if it is, it deletes that variable. How could I make this more effective to the point of not having to hardcode ALL these checks? I sometime want to scale it up to like 9 optional(1 being required) but think there has to be some kind of way to not have to hardcode 20 lines just for a simple check as this. A bigger portion of my codebase is below

import sqlite3
db_name = input("Enter wanted name of database: ") + ".db"
table_name = input("Enter wanted name of table: ")

table_parameters = {
  "parameter1": input("enter 1.st here: "),
  "parameter2": input("enter 2.nd here: "),
  "parameter3": input("Enter 3rd: "),
  "parameter4": input("Enter 3rd: "),
  "parameter5": input("Enter 3rd: "),
  "parameter6": input("Enter 3rd: "),
  "parameter7": input("Enter 3rd: "),
  "parameter8": input("Enter 3rd: "),
  "parameter9": input("Enter 3rd: "),
  "parameter10": input("Enter 3rd: "),

}

#Check if inputs is empty, if they are, delete them
if(table_parameters['parameter1'] == " "):
  del table_parameter['parameter1']
if(table_parameters['parameter2'] == " "):
  del tatble_parameters['parameter2']
if(table_parameters['parameter3'] == " "):
  del table_parameters['parameter3']
if(table_parameters['parameter4'] == " "):
  del table_parameters['parameter4']


conn = sqlite3.connect(f"{db_name}")

Upvotes: 0

Views: 54

Answers (2)

Gillanius
Gillanius

Reputation: 116

One possible option is, e.g., first define, what is empty

empty_values = ["", " ", None]

Then you could check the values of your dict against this list of possible empty values:

for key, value in table_parameters.keys():
    if value in empty_values:
        del table_parameters[key]

Edit: added .keys() according to Reti43

Upvotes: 0

lllrnr101
lllrnr101

Reputation: 2343

Make a new dicttionary by iterating on all values or use dict comprehensions.

>>> table_parameters = {1:10, 2:None, 3:30, 4: ' '}
>>> table_parameters = {x:y for x,y in table_parameters.items() if y is not None and y != ' '}
>>> table_parameters
{1: 10, 3: 30}
>>> 


Upvotes: 1

Related Questions