0
votes

Python convertit la liste des tuples à Json

J'ai une liste de tuples comme: xxx pré>

Le troisième élément de tous les tuples sont les mêmes. J'essaie de convertir cette liste en un dictionnaire de la manière suivante: p> xxx pré>

update: strong> p>

à partir de maintenant je Je le fais manuellement mais j'ai environ 1000 tuples dans une liste avec le même horodatage, mais parfois, j'ai aussi différents horodatages. J'essaie d'automatiser ce processus en écrivant une fonction car je dois réutiliser le code à nouveau et à nouveau pour une liste multiples de tuples pour créer une liste de dictionnaires, mais je ne sais pas comment aborder ce problème. Toute aide serait appréciée? P>

[{'timestamp': '20190208011713-0500',
  'a' : 76,
  'b' : 14,
  'c' : 99,
  'd' : 62,
  'e' : 112,
  'f' : 78,
  'g' : 20,
  'h' : 14,
  'i' : 23}, 
  {'timestamp': '20190208011803-0500',
  'a' : 45,
  'b' : 36,
  'c' : 22,
  'd' : 69,
  'e' : 11,
  'f' : 118,
  'g' : 29,
  'h' : 34,
  'i' : 63}]


2 commentaires

Note latérale: Python 2.7 va arriver à la fin de la vie dans 10 mois de temps . S'il s'agit d'un nouveau projet, vous devriez vraiment construire cela dans Python 3. Ma réponse ci-dessous est entièrement compatible avec Python 2 et 3, vous pouvez donc le prendre avec vous.


Merci @martijn je garderai ça à l'esprit. Oui, j'utilise Python 2.7 pour ce projet et vous avez dit que je mènerai mon code vers Python3 de Python2. Et votre solution fonctionne :)


4 Réponses :


1
votes

Si l'horodatage est garanti d'être identiques ou que vous ne vous souciez pas si ce n'est pas le cas, il suffit d'utiliser:

groups = {}
for key, value, ts in your_list:
    if ts not in groups:
        groups[ts] = {'timestamp': ts}
    groups[ts][key] = value

result = sorted(groups.values(), key=itemgetter('timestamp'))


5 commentaires

Le code ci-dessus fonctionne bien, mais uniquement pour le même horodatage non pour différents horodatages.


@akashbachu: C'est pourquoi la réponse commence par si l'horodatage est garanti d'être identiques,


@akashbachu: Les horodats sont-ils groupés au moins? Ou faire peut-ils apparaître dans n'importe quel ordre?


Ils apparaissent dans un ordre aléatoire.


@akashbachu: À droite, j'ai donné des options pour quand ils sont regroupés et quand ils ne le sont pas.



0
votes

Comptabilisation du changement d'horodatage:

{'20190208011713-0500': {'a': '76',
  'b': '14',
  'c': '99',
  'd': '62',
  'e': '112',
  'f': '78',
  'g': '20',
  'h': '14',
  'i': '23'}}


0 commentaires

0
votes
tups = [('a', '76', '20190208011713-0500'),
 ('b', '14', '20190208011713-0500'),
 ('c', '99', '20190208011713-0500'),
 ('d', '62', '20190208011713-0500'),
 ('e', '112', '20190208011713-0500'),
 ('f', '78', '20190208011713-0500'),
 ('g', '20', '20190208011713-0500'),
 ('h', '14', '20190208011713-0500'),
 ('i', '23', '20190208011713-0500')]


def to_dict(tups):
    my_dict = {element[0]: element[1] for element in tups}
    my_dict['timestamp'] = tups[-1][2] 
    return my_dict

m_d = to_dict(tups)
print(m_d) 

0 commentaires

0
votes

Je pense que la manière la plus simple est la suivante: xxx


0 commentaires