2016-11-29 1 views
0

Je reçois les données XML en dessous le formatConversion des valeurs séparées par virgule à Python dictionnaire

<?xml version="1.0"?> 
<localPluginManager> 
    <plugin> 
     <longName>Plugin Usage - Plugin</longName> 
     <pinned>false</pinned> 
     <shortName>plugin-usage-plugin</shortName> 
     <version>0.3</version> 
    </plugin> 
    <plugin> 
     <longName>Matrix Project Plugin</longName> 
     <pinned>false</pinned> 
     <shortName>matrix-project</shortName> 
     <version>4.5</version> 
    </plugin> 
</localPluginManager> 

Utilisé ci-dessous le programme pour aller chercher le "longName" et "version" du XML

Ce qui me donne ci-dessous sortie que je veux convertir en format de dictionnaire pour traiter plus loin

('Plugin Usage - Plugin', '0.3') 
('Matrix Project Plugin', '4.5') 

Sortie prévue -

dictionary = {"Plugin Usage - Plugin": "0.3", "Matrix Project Plugin": "4.5"} 
+0

Pouvez-vous préciser ce que vous voulez obtenir? –

+0

@nick_gabpe - J'ai besoin de convertir ma sortie en dictionnaire Python –

+0

Donc, votre question de base est comment obtenir un dictionnaire en python et comment y ajouter des valeurs? – jotasi

Répondre

0
import xml.etree.ElementTree as ET 
    import requests 
    import sys 
    response = requests.get(<url1>,stream=True) 
    response.raw.decode_content = True 
    tree = ET.parse(response.raw) 
    root = tree.getroot() 
    mydict = {} 
    for plugin in root.findall('plugin'): 
     longName = plugin.find('longName').text 
     shortName = plugin.find('shortName').text 
     version = plugin.find('version').text 
     master01 = longName, version 
     print (master01,version) 
     mydict[longName]=version 
0

Je pense que vous devriez créer un dictionnaire au début:

my_dict = {} 

puis attribuez-lui des valeurs à ce dictionnaire dans la boucle:

my_dict[longName] = version 
0

En supposant que vous avez tous vos tuples stockés dans une liste, vous pouvez itérer dessus comme ceci:

tuple_list = [('Plugin Usage - Plugin', '0.3'), ('Matrix Project Plugin', '4.5')] 
dictionary = {} 

for item in tuple_list: 
    dictionary[item[0]] = item[1] 

Ou, en Python 3, une compréhension dictée à la place.

0

C'est très simple, en fait. Tout d'abord, vous initialisez le dictionnaire avant la boucle, puis vous ajoutez des paires clé-valeur que vous les obtenez:

dictionary = {} 
for plugin in root.findall('plugin'): 
    ... 
    dictionary[longName] = version # In place of the print call