J'ai des difficultés à coder le bon code pour obtenir la chaîne à diviser en dictionnaire. J'ai essayé la méthode ci-dessous:Impossible d'obtenir une chaîne triée dans un dictionnaire pour créer un diagramme à secteurs
maindict = dict(item.split(":") for item in mainmain.split(","))
print maindict
Cependant, j'ai obtenu l'erreur suivante déclarant
"ValueError: dictionary update sequence element #1 has length 1; 2 is required".
Le dessous est un extrait de mes codes.
Tout d'abord, l'utilisateur saisira son fichier via l'explorateur de fichiers et cette fonction Category()
sera appelée et le fichier sera lu. A partir du fichier CSV, la fréquence des mots sera comptée et mise dans une chaîne à afficher.
def category(x):
readCSV = csv.DictReader(open(filename, 'rb'))
dict_list = []
for read in readCSV:
dict_list.append(read)
for item in dict_list:
rowRequest = item["Order Group"].title()
string = rowRequest.replace('-', ' ').strip()
if str(string):
count = frequencyReq.get(string, 0)
frequencyReq[string] = count + 1
freqSort = sorted(frequencyReq.iteritems())
Maintainence = ""
num_maintainence = 0
for item, freqCom in freqSort:
main = ['Acmv', 'Air', 'Audio', 'Elec', 'Lift', 'Light']
if any(word in item for word in main):
num_maintainence += freqCom
Maintainence += "%s:%d, " % (item, freqCom)
Mainit = "%s" % num_maintainence
mainmain = "%s" % Maintainence
maindict = dict(item.split(":") for item in mainmain.split(", "))
print maindict
De l'mainmain, je suis la chaîne que je voulais qui est
Acmv:2, Air Conditioning:50, Audio Video Equipment:1, Electrical:22, Lift:60, Lighting:118,
lors de l'impression.
Maintenant, j'ai besoin de séparer cette chaîne dans un dictionnaire afin que je puisse prendre la variable et les valeurs du dictionnaire pour créer un graphique à secteurs.
-vous déjà utilisé vos données sous la forme d'une liste de paires clé/valeur, qui aurait pu être tourné directement dans un dictionnaire - pourquoi dans le monde vous joindre à tout en un chaîne, puis la fractionner dans les éléments individuels ??? Quoi qu'il en soit, le problème est le ', 'sur votre chaîne - le fractionnement produit un élément vide à la fin, en séparant ce blanc sur': 'produit un seul élément, pas les deux requis pour le constructeur dict. – jasonharper