Obtengo una carga útil de datos de una solicitud de API de usuarios (del cuerpo de la API) generalmente en formato JSON. Se almacena como un diccionario en mi código de Python.

"Data":{
      "Ready Date":"2020-01-31T12:00:00",
      "Ready Time":"2020-01-31T12:00:00",
      "Delivery Date":"2020-02-15T12:00:00",
      "Service Level":"EC",
      "Close Time":"2020-01-31T17:00:00"}

Quiero validar los campos dados. Si un usuario no da "Fecha de preparación", debe decir Falta la fecha de preparación y comprobar cada objeto dentro de ese JSON y decir si falta algo

Mi código: estoy almacenando todas las claves del diccionario en una matriz como:

a = ["Ready Date","Ready Time","DeliveryDate","Service Level","Close Time"]

Mi logica

for value in data:
    if value not in a:
        print("value Missing" : Value)
    else:
        print("All values are entered")

Resultado: si di todos los valores en el diccionario y la lista igual,

My results prints :
All values are entered
All values are entered
All values are entered

Si elimino cualquier valor del diccionario y verifico la condición, obtengo el siguiente resultado de impresión

value missing : Ready Date
All values are entered
All values are entered

Necesito evitar el bucle y solo imprimirlo una vez

0
Ashish Akshantal 23 ago. 2020 a las 04:09

1 respuesta

La mejor respuesta

Se supone que no debes hacer una pregunta sin antes proporcionar una prueba de que lo intentaste (aunque no hiciste una pregunta y asignaste una tarea), pero aquí está la respuesta:

data = {
      "Ready Date":"2020-01-31T12:00:00",
      "Ready Time":"2020-01-31T12:00:00",
      "Delivery Date":"2020-02-15T12:00:00",
      "Service Level":"EC",
      "Close Time":"2020-01-31T17:00:00"}
a = ["Ready Date","Ready Time","DeliveryDate","Service Level","Close Time"]

missing = [field for field in a if field not in data]

if len(missing) == 0:
    print("All values are entered")
else:
    [print(f"Missing value: {field}") for field in missing]
0
Elan-R 23 ago. 2020 a las 01:15