Je suis certain que cela a été répondu, mais je ne trouve pas d'exemple et j'ai du mal à le comprendre.
J'ai un tableau de dict. Chaque dict a une liste d'équipes. Je veux filtrer le tableau où l'ID de l'équipe n'est pas dans la liste. Par exemple: p> Je veux filtrer la matrice pour obtenir uniquement les équipes où ID est "B": p> items = filter(items, lambda x: 'b' in x['teams'])
3 Réponses :
Vous pouvez utiliser tout () code> avec la liste intérieure pour rechercher des équipes où n'importe quelle équipe intérieure code> a l'identifiant souhaité: items = [{'teams':[{'id':'a'}]}, {'teams':[{'id':'b'}]}, {'teams':[{'id':'a'},{'id':'b'}]}]
search = 'b'
list(filter(lambda item:
any(team['id'] == search
for team in item['teams']), items)
)
# [{'teams': [{'id': 'b'}]}, {'teams': [{'id': 'a'}, {'id': 'b'}]}]
Votre utilisation de WhitSpace rend cela vraiment difficile à lire. En outre, vous utiliseriez simplement une expression de générateur si vous "Besoin de l'évaluation paresseuse du filtre".
Une expression génératrice ne serait pas différente, c'est le point.
Rappelle à mon vieille blague: 'Q: Combien de développeurs faut-il pour changer une ampoule? A: 10: Un pour changer l'ampoule et neuf autres lui disent comment ils l'auraient mieux fait ». Si votre générateur est la réponse, vous devriez Soumettre une réponse i>. Downvoting Solutions de travail qui répondent à la question est de très mauvais goût.
Nice, je n'ai pas rencontré cette version de la blague.
Vous êtes à mi-chemin là-bas. Vous pouvez utiliser n'importe quel code> et une expression génératrice pour vérifier si 'B' est dans les équipes. output = [
team
for team in items
if any(t['id'] == 'b' for t in team['teams'])
]
# [{'teams': [{'id': 'b'}]}, {'teams': [{'id': 'a'}, {'id': 'b'}]}]
Voici une fonction de vérifier s'il y a une équipe particulière dans une liste des équipes:
items_with_team_b = [x for x in items if contains_team(x["teams"], "b")]
Un moyen simple de rendre ce problème plus facile à résoudre vous-même serait d'écrire le
lambda code> comme fonction réelle. (A également un effet secondaire d'être auto-documentant.)