J'ai une liste et je veux vérifier si un pourcentage des éléments de la liste correspond dans le dictionnaire. Donc d'abord je fais pour n'importe quelle valeur.
J'ai utilisé n'importe quelle fonction mais ne renvoie qu'un seul False. Plus tard, j'ai essayé ceci:
d = {'key1': ['a', 'b', 'c'], 'key2': ['b', 'l'], 'key3': ['m']}
key_words = ['a', 'b', 'l']
result = [test in d.values() for test in key_words]
Je m'attendais à obtenir [True, True, False]. Mais la sortie est [False, False, False]. Je pense que je ne boucle pas dans toute la liste.
4 Réponses :
d.values () vous rend [['a', 'b', 'c'], ['b', 'l'], ['m ']] .
Notez que ce n'est pas la même chose que ['a', 'b', 'c', 'l', 'm'] , et donc 'a' dans d.values () ne sera jamais True .
x = zip(key_words, d.values()) [a in b for a, b in x]
Vous devez parcourir le dictionnaire et vérifier si une valeur se trouve dans votre tableau key_words .
d = {
'key1': ['a', 'b', 'c'],
'key2': ['b', 'l'],
'key3': ['m']
}
key_words = ['a', 'b', 'l']
for item in d.values():
arr = []
for i in item:
if i in key_words:
arr.append(True)
else:
arr.append(False)
print(arr)
Merci, c'est exactement ce que je veux. J'ai une autre question: comment puis-je appliquer cela à une colonne DataFrame?
Je pense que vous devriez le faire.
d = {'key1': ['a', 'b', 'c'], 'key2': ['b', 'l'], 'key3': ['m']}
key_words = ['a', 'b', 'l']
data = set([])
for arr in d.values():
for i in arr:
data.add(i)
result = [i in data for i in key_words]
Cela créera un ensemble d'options afin qu'il n'y ait pas de doublons et parcourra ces données. L'ensemble est utilisé pour maintenir le nombre de valeurs bas car vous cherchez simplement à voir si le caractère existe, pas combien de fois il existe.
utilisez-vous Python> = 3.7?
vos valeurs de D résulteraient en un tableau / itérable de tableaux. Donc a! = [A, b, c].
@Fallenreaper - voulez-vous dire une liste de listes?