J'essaie d'exécuter ce code de test:

def test(**kwargs):
    for key, value in kwargs.items():
        if 'sdk' in key:
            print value
            if 1 in value:
                print 'HelloWorld'    

test(sdk=1)

Mais bien sûr, cela me donnera une erreur car l'entier n'est pas itérable, alors comment pouvez-vous vérifier si l'entier que vous voulez à l'intérieur de la valeur? Je vous remercie

0
Vlad 15 mars 2019 à 09:35

2 réponses

Meilleure réponse

L'expression que vous devriez réellement utiliser est if value == 1.

if 1 in value s'attend à ce que value soit un itérable (par exemple, un tableau ou un dict) et renvoie True si 1 est contenu dans value, et False sinon.

Si value n'est pas un itérable, vous obtiendrez une exception:

>>> arr = [1, 2, 3]
>>> 1 in arr
True
>>> 4 in arr
False
>>> not_arr = 1
>>> 1 in not_arr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
>>> not_arr == 1
True
>>> not_arr == 2
False
1
jbarguil 15 mars 2019 à 08:17

Utiliser and et comparer le '1' au type str de value:

def test(**kwargs):
    for key, value in kwargs.items():
        if 'sdk' in key and '1' in str(value): # True in case of test(sdk=19)
                print('HelloWorld')

test(sdk=1)

OU

Si vous ne souhaitez pas convertir le 1 en str '1', == est ce que vous pourriez utiliser:

if 'sdk' in key and 1 == value: # False in case of test(sdk=19)

SORTIE :

HelloWorld
1
DirtyBit 15 mars 2019 à 07:21