-2
votes

Est-il possible d'écrire un dictionnaire de dictionnaires dans un fichier CSV?

Le format du dictionnaire Je fais référence à ce que cela ressemble à ceci (fyi, ce ne sont que des joueurs de football): xxx pré>

est-il possible d'utiliser ce dictionnaire pour écrire quelque chose comme le tableau ci-dessous pour Un CSV? P>

First Name:    Last Name:     Team: 

Shkodran       Mustafi        Arsenal
Héctor         Bellerín       Arsenal
Sead           Kolasinac      Arsenal


3 commentaires

Votre sortie souhaitée n'est pas un CSV.


@Scotthunter L'OP illustre simplement ce que la table devrait ressembler.


Bonjour, oui - J'essayais juste d'illustrer ce que la table devrait ressembler. Et en ce qui concerne les noms, je les utilisais que pour les utiliser en tant qu'esponsultiers dans la question. Le vrai dictionnaire a environ 20 paires de clés. J'espère que cela effraie les choses. Merci beaucoup!


5 Réponses :


0
votes

CSV est un format qui peut représenter tout hachage de hachage ou si je suppose que vous utilisez correctement le dictionnaire Python des dictionnaires.

Vous devez écrire le bon anal erser

Une manière d'utiliser un différent différent différent pour représenter les hachages imbriquées par hasard. Supports {

{, shkodran musgotafi, {, premier, shkodran, dernier, musgotafi, équipe, arsenal,},}

Je vous suggère d'utiliser JSON, YAML ou HOCON, ils sont plus faciles sur l'œil humain


0 commentaires

1
votes

donc essentiellement itération du dictionnaire et le mettre au format .csv? XXX


3 commentaires

Merci beaucoup pour la suggestion! Bien que lorsque j'essaie ce code, je reçois cette erreur "TypeError: Séquence de la séquence 0: Instance attendue STR, liste trouvée".


C'est étrange, je suppose que cela se produit sur la ligne ? Je ne peux pas sembler obtenir que cela se produise peut avoir à voir avec la version Python ou le système d'exploitation?


@Luke j'ai trouvé comment obtenir cette erreur apparaîtra. Dans vos autres données, il doit y avoir une liste comme valeur dans le premier élément clé, j'ai modifié pour compenser cela, juste pour le plaisir.



3
votes

Si vous voulez vraiment les colonnes des dictionnaires internes écrites dans un fichier CSV, cela peut être fait très facilement avec des pandas.

First Name,Last Name,Team
Shkodran,Mustafi,Arsenal
Héctor,Bellerín,Arsenal
Sead,Kolasinac,Arsenal


1 commentaires

C'est honnêtement la meilleure réponse si vous avez plus de 100 000 entrées, Pandas prend un peu pour démarrer, mais après cela, la vitesse paiera.



0
votes

Un objet que vous pouvez trouver utile est csv.dictwriter code>: https://docs.python.org/2/library/csv.html#csv.dicicwriter

Exemple Utilisation: P>

import csv

player_list = {
    'Shkodran Mustafi': {'first': 'Shkodran', 'last': 'Mustafi','team': 'Arsenal'},
    'Héctor Bellerín': {'first': 'Héctor', 'last': 'Bellerín','team': 'Arsenal'},
    'Sead Kolasinac': {'first': 'Sead', 'last': 'Kolasinac', 'team': 'Arsenal'}
}

with open("player_data.csv", 'w') as fp:
    writer = csv.DictWriter(fp, fieldnames=['first', 'last', 'team'])
    writer.writeheader()
    for player_name, player_info in player_list.items():
        writer.writerow(player_info)


2 commentaires

Mis à part les en-têtes qui ont tort et la terminaison de ligne \ n \ n dans Windows.


@James Gabriel - merci beaucoup! Cela a fonctionné parfaitement! Je vais lire plus loin sur l'objet CSV.Dicterreader. Merci encore!



1
votes

Dans ce cas, vous n'avez même pas besoin de vous inquiéter du fait que c'est un dictionnaire de dictionnaires. Vous ne suscitant jamais le dictionnaire "intérieur" de toute façon, vous pouvez donc faire quelque chose comme ceci: xxx

Dans ce cas, il n'y a que 3 valeurs, donc je viens d'utiliser la concaténation de la chaîne, mais Si vous faites plus de valeurs, vous voudrez peut-être essayer quelque chose comme ce que fait @Tgikal.


2 commentaires

Merci beaucoup! Je commence à me mettre la tête. Votre message a vraiment aidé!


@Luke content que je puisse aider