Igualando caracteres de una cadena con claves de un diccionario y convirtiendo cadenas en valores de las claves si coinciden.
Tengo un diccionario llamado my_dict={‘A’:1, ‘B’:1,’C’:1,’D’:2,’E’:2,’F’:2,’G’:3,’H’:3,’I’:3}
Quiero escribir una función que tome una cadena y, si su longitud es 5, compruebe los caracteres de la cadena con las claves del diccionario y, si coinciden, imprima los valores de esas claves, de lo contrario, debería devolver falso. Por ejemplo, si ingreso una cadena de “ABIFA”, debería producir 11321. A continuación se muestra mi código, pero no produce lo que espero:
my_dict={‘A’:1, ‘B’:1,’C’:1,’D’:2,’E’:2,’F’:2,’G’:3,’H’:3,’I’:3}
def string_to_number(mystring):
if len(mystring)==5:
result = [val for key, val in my_dict.items() if mystring in key]
print(str(result))
else:
return False
string_to_number(“ABIFA”) # debería producir 11321
string_to_number(“ABIFAA”) # debería devolver false
¿Podrías decirme dónde está mi error, por favor?
davy.ai
El error en tu código es que estás usando el operador
in
para verificar si los caracteres de la cadena están en las claves del diccionario. El operadorin
verifica si una subcadena está presente en una cadena, no si un carácter está presente en una cadena. Para verificar si un carácter está presente en una cadena, debes usar el métodofind()
.Entonces, el código corregido debería verse así: