Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dictionnaire en python

Ajout d'elements dans le dictionnaire

    22 janvier 2014 à 23:10:23

    Bonjour,

    Voici ma problématique en python:

    Etape 1 :

    obj_json = {"interface":[{"port_num": "2","status": "0"}]}

    Etape 2 :

    obj_json = {"interface":[{"port_num": "1","status": "0"},{"port_num": "2","status": "0"}]}

    Question :

    comment ajouter {"port_num": "2","status": "0"} dynamiquement

    Cordialement

    Fabien

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 janvier 2014 à 23:54:13

      Salut, tout simplement dico['key'].append({'a':1,'b':2}) ...

      • Partager sur Facebook
      • Partager sur Twitter
        23 janvier 2014 à 9:08:34

        Merci je vais tester cela immédiatement, je me sens ridicule tellement la syntaxe est simple :)

        Cordialement

        Fabien

        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2014 à 9:20:03

          Bonjour,

          Merci le test est concluant

          • Partager sur Facebook
          • Partager sur Twitter
            24 janvier 2014 à 8:31:08

            Bonjour,

            Je refais face a un problème sur la lecture de dictionnaire :

            J'ai le dictionnaire suivant :

            {u'device_information': {u'disk_usage': {u'used(KB)': 5796424, u'total(KB)': 10482412}, u'disk_status': {u'disk1': u'active', u'disk2': u'unknow'}, u'memory_usage': {u'used(KB)': 1664008, u'total(KB)': 2061104}, u'cpu_status': u'ALL_OK', u'fan_status': [], u'cpu_count': 2, u'cpu_temperature': {u'temperature_C': 0, u'temperature_F': 0}, u'power_supply': {u'supply1': u'no support', u'supply2': u'no support'}}}

            Je souhaite lire used(KB)

            je n'arrive pas a trouver la syntaxe pour aller jusque la. Actuellement j'utilise : data['device_information'].get('disk_usage')

            Ce n'est pas très élégant !!!

            • Partager sur Facebook
            • Partager sur Twitter
              24 janvier 2014 à 8:41:01

              je viens de trouver... comme quoi avec un peu de reflexion ..

              data['device_information'].get('disk_usage')['used(KB)']

              • Partager sur Facebook
              • Partager sur Twitter
                24 janvier 2014 à 10:50:39

                Pourquoi est-ce que tu fais deux accès direct dans ton dictionnaire et un accès par get ? Est-ce que que 'disk_usage' peut venir à disparaitre de ton dictonnaire ?
                Sinon...
                data['device_information']['disk_usage']['used(KB)']
                Y a-t-il une raison particulière pour laquelle tu fais un get en plein milieu de ton accès au dictionnaire ?
                • Partager sur Facebook
                • Partager sur Twitter
                  24 janvier 2014 à 13:02:55

                  "Y a-t-il une raison particulière pour laquelle tu fais un get en plein milieu de ton accès au dictionnaire ?"

                  Aucune mis a part mon ignorance. La valeur ne peut pas disparaitre.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    24 janvier 2014 à 20:25:31

                    @Fbd,

                    Comment fais-tu pour arriver à des données aussi complexes?

                    On peut voir un bout de code qui permet de voir sa construction?

                    -
                    Edité par Anonyme 24 janvier 2014 à 20:25:42

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 janvier 2014 à 9:25:22

                      Peut-être que ça vient d'un autre programme (dans un autre langage) car dans le premier post son objet s'appelle 'obj_json'. Je présume qu'il récupère ces infos via un autre programme qui possède une API Json ou quelque chose dans ce genre. Pas sûr que ce soit calculable directement en Python, mais je suis aussi curieux de savoir comment ces données sont calculées.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 janvier 2014 à 10:39:15

                        Voici mon code :

                        #!/usr/bin/env python

                        #

                        # v1, January 24, 2014

                        # by Fabien Delmotte

                        #

                        # Reference: AX_aXAPI_Ref_v2.8.pdf

                        # Usage: A10_system.device_info.get.py -d <device>

                        # Librairy

                        #

                        import httplib, json, urllib, urllib2, optparse

                        import socket, ssl, time, re

                        from A10_librairy import *

                        from xml.etree import ElementTree

                        # specify device

                        parser = optparse.OptionParser()

                        parser.add_option('-d', '--device', dest="device", action="store")

                        options, args = parser.parse_args()

                        device = options.device

                        # get the session id

                        session_id = get_session_id(device)

                        # Construct HTTP URL and Post Body

                        post_body = ""

                        method = "system.device_info.get"

                        result = send_request(device,session_id,method,post_body)

                        data = json.loads(result)

                        #print data

                        dsk_usag_used = data['device_information'].get('disk_usage')['used(KB)']

                        dsk_usag_total = data['device_information'].get('disk_usage')['total(KB)']

                        dsk_status_1 = data['device_information'].get('disk_status')['disk1']

                        dsk_status_2 = data['device_information'].get('disk_status')['disk2']

                        mem_usag_used = data['device_information'].get('memory_usage')['used(KB)']

                        mem_usag_total =  data['device_information'].get('memory_usage')['total(KB)']

                        cpu_status = data['device_information'].get('cpu_status')

                        #fan_status = data['device_information'].get('fan_status')

                        fan_status = "none"

                        cpu_total = data['device_information'].get('cpu_count')

                        cpu_temp = data['device_information'].get('cpu_temperature')['temperature_C']

                        pw_supply_1 = data['device_information'].get('power_supply')['supply1']

                        pw_supply_2 = data['device_information'].get('power_supply')['supply2']

                        # Process in case of error (disk unknow state for example)

                        # Format for Cacti

                        print "dsk_usag_used:%s dsk_usag_total:%s dsk_status_1:%s dsk_status_2:%s mem_usag_used:%s mem_usag_total:%s cpu_status:%s fan_status:%s cpu

                        _total:%s cpu_temp:%s pw_supply_1:%s pw_supply_2:%s" %(dsk_usag_used,dsk_usag_total,dsk_status_1,dsk_status_2,mem_usag_used,mem_usag_total,c

                        pu_status,fan_status,cpu_total,cpu_temp,pw_supply_1,pw_supply_2)

                        #close the API session

                        post_body = ""

                        method = "session.close"

                        result = send_request(device,session_id,method,post_body)

                        #print result

                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 janvier 2014 à 12:14:29

                          Si tu pouvais mettre ton code dans une balise code ou bien le mettre sur pastebin, ça serait quand même vachement mieux xD
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            30 janvier 2014 à 15:06:29

                            Fire4764 a écrit:

                            Si tu pouvais mettre ton code dans une balise code ou bien le mettre sur pastebin, ça serait quand même vachement mieux xD

                            Même pas sûr que ce soit plus digeste...

                            Un début d'idée pour remplacer la partie # print data :

                            >>> def print_dict(d, n=0):
                            ...     indent = '\t' * n
                            ...     for key, value in d.items():
                            ...         print(indent, key, ':', end=' ')
                            ...         if isinstance(value, dict):
                            ...             print('{')
                            ...             print_dict(value, n + 1)
                            ...             print(indent, '}')
                            ...         else:
                            ...             print(value)
                            ...         
                            >>> print_dict(d)
                             device_information : {
                            	 disk_usage : {
                            		 used(KB) : 5796424
                            		 total(KB) : 10482412
                            	 }
                            	 fan_status : []
                            	 cpu_status : ALL_OK
                            	 cpu_temperature : {
                            		 temperature_F : 0
                            		 temperature_C : 0
                            	 }
                            	 disk_status : {
                            		 disk2 : unknow
                            		 disk1 : active
                            	 }
                            	 memory_usage : {
                            		 used(KB) : 1664008
                            		 total(KB) : 2061104
                            	 }
                            	 cpu_count : 2
                            	 power_supply : {
                            		 supply2 : no support
                            		 supply1 : no support
                            	 }
                             }
                            
                            • Partager sur Facebook
                            • Partager sur Twitter
                              8 février 2014 à 14:23:21

                              Bonjour,

                              Merci pour les remarques :)

                              Pour un code plus digeste .... je ne suis pas certain d'y arriver

                              La partie pour remplacer le print data est très intéressant pour ma culture et pour aérer le code.

                              Cordialement

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Dictionnaire en python

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown