Python >> Tutoriel Python >  >> Python

Comment imprimer un dictionnaire sans crochets en Python ?

Formulation du problème

Étant donné un dictionnaire de paires clé-valeur en Python. Si vous imprimez le dictionnaire sur le shell en utilisant print({'a': 1, 'b': 2}) , la sortie est entourée d'accolades (accolades) comme suit : {'a': 1, 'b': 2} . Mais vous voulez le dictionnaire sans crochets comme ceci :'a': 1, 'b': 2 .

d = {'a': 1, 'b': 2}
print(d)
# What you don't want:
# {'a': 1, 'b': 2}

Comment imprimer le dictionnaire sans accolades ?

# What you want:
# 'a': 1, 'b': 2
# or: 
# a:1 b:2

Méthode 1 :Déballage + Compréhension de la liste

Pour imprimer un dictionnaire sans insérer de crochets, vous pouvez créer dynamiquement une liste de chaînes à l'aide de la compréhension de liste. Chaque chaîne représente un mappage de clé à valeur. Vous parcourez le dictionary.items() méthode pour obtenir les tuples clé-valeur. Par exemple, [str(k) + ':' + str(v) for k,v in d.items()] crée une liste de 'key: value' cordes.

d = {'a': 1, 'b': 2}
print(*[str(k) + ':' + str(v) for k,v in d.items()])

La sortie est :

a:1 b:2

L'opérateur astérisque * est utilisé pour décompresser un itérable dans la liste d'arguments d'une fonction donnée. Vous pouvez décompresser les éléments de la liste dans le print() fonction pour imprimer chacun d'eux individuellement. Par défaut, tous les arguments d'impression sont séparés par un espace vide. Par exemple, l'expression print(*my_list) imprimera les éléments en my_list , séparés par des espaces vides, sans les crochets englobants !

Pour maîtriser les bases du déballage, n'hésitez pas à regarder cette vidéo sur l'opérateur astérisque :

Méthode 2 :Déballage + Compréhension de la liste + Séparateur d'impression

Pour imprimer une liste séparée par des virgules sans enfermer de crochets, la manière la plus Pythonic est de décompresser toutes les valeurs de la liste dans le print() fonction et utilisez le sep='\n' argument pour séparer les éléments de la liste par un caractère de saut de ligne.

d = {'a': 1, 'b': 2}
print(*[str(k) + ':' + str(v) for k,v in d.items()], sep='\n')

La sortie est :

a:1
b:2

Notez qu'une version plus concise de l'extrait de code précédent est avec la chaîne f f'{k}----{v}' :

d = {'a': 1, 'b': 2}
print(*[f'{k}----{v}' for k,v in d.items()], sep='\n')

Sortie :

a----1
b----2

Vous pouvez en savoir plus sur les tenants et les aboutissants du print() intégré fonction dans la vidéo suivante :

Méthode 3 :découpage de la représentation de chaîne

Le découpage est un moyen concis d'accéder à une sous-séquence à partir d'une séquence d'origine. Vous pouvez utiliser le découpage en tranches sur la représentation sous forme de chaîne d'un dictionnaire pour accéder à tous les caractères sauf le premier et le dernier, qui sont les accolades. Par exemple, l'expression print(str({'a': 1, 'b': 2})[1:-1]) imprime la liste sous la forme 'a': 1, 'b': 2 sans insérer de crochets.

d = {'a': 1, 'b': 2}
print(str(d)[1:-1])
# Output: 'a': 1, 'b': 2

N'hésitez pas à plonger dans le slicing next pour booster vos compétences en codage :