3
votes

Une liste de listes en minuscules

J'ai une liste de listes:

data = [['SiteUrl','Url','Title'],['SiteUrl','Url','Title']]

Comment puis-je parcourir la liste et mettre en minuscules tout le contenu en utilisant python?


2 commentaires

La profondeur de la liste imbriquée est-elle fixe? Ou pourrait-il y avoir un troisième niveau aussi?


si vous avez une profondeur indéfinie de listes et / ou de contenu mixte, écrivez une méthode récursive qui itère tous les éléments, si la chaîne appelle la valeur inférieure et si la méthode d'appel de la liste sur cette liste


5 Réponses :


2
votes

Parcourez chacune des listes internes:

data = [[string.lower() for string in sublist] for sublist in data]


0 commentaires

3
votes

En utilisant une compréhension de liste:

data = [list(map(str.casefold, x)) for x in data]

Ou fonctionnellement:

data = [[x.casefold() for x in sublst] for sublst in data]

De la documentation :

Le pliage du boîtier est similaire à la mise en minuscules mais plus agressif car il est destiné à supprimer toutes les distinctions de casse dans une chaîne.


0 commentaires

0
votes

Vous pouvez mapper () toutes les sous-listes de données vers map () qui rendra tous ses éléments inférieurs ( ) .

[['siteurl', 'url', 'title'], ['siteurl', 'url', 'title']]

Sortie

data= [['SiteUrl','Url','Title'],['SiteUrl','Url','Title']]

data = list(map(lambda x: list(map(lambda y: y.lower(), x)), data))
print(data)


0 commentaires

0
votes

Pour un nombre arbitraire de niveaux, vous pouvez essayer cette récursion

data= [['SiteUrl','Url','Title'],['SiteUrl','Url','Title']]
def recursive_apply(x, f=lambda v: v.lower()):
    if type(x) is list: 
        return [recursive_apply(el) for el in x]
    return f(x)
recursive_apply(data)   


0 commentaires

0
votes

data = [map (str.lower, sublist) pour la sous-liste dans les données]


0 commentaires